Forum Webscript.Ru

Программирование => PHP => Тема начата: Hong от 21 Марта 2005, 20:15:05

Название: Вырезания линка из текста. Регулярное выражение.
Отправлено: Hong от 21 Марта 2005, 20:15:05
Привет всем.
Помогите пожалуйста совтавить регулярное выражение, которое я потом смогу применить на пхп.

Есть текст, надо чтобы все линки были заменены примерно вот таким образом.

Первоначальный текст:

Text: Osnabrück, Tel: 000000, Fax: 000000,
E-Mail: TEST@TE-TE.Test.com and
test@test.de
Stadt Osnabrück
http://www.test1.de/index3.php and
http://www.test2.de and
http://www.test3.de?variable=vor&variable2=vor and
http://www.test4.de?variable=vor and
http://test5.subdomain.de and
http://test6.de?variable=yes&weiter
...

Естественно текст всегда разный и могут быть разные вариации линка. Длинные линки должны приведены к нормальной короткой форме, как показано внизу.
Что надо получить:

Text: Osnabrück, Tel: 000000, Fax: 000000,
E-Mail: TEST@TE-TE.Test.com and
test@test.de
Stadt Osnabrück
http://www.test1.de and
http://www.test2.de and
http://www.test3.de and
http://www.test4.de?variable=vor and
http://test5.subdomain.de and
http://test6.de
...

Cпасибо.

Cu.
Название: Вырезания линка из текста. Регулярное выражение.
Отправлено: Меняздесьдавнонет от 21 Марта 2005, 22:50:52
ну, начинай составлять
Название: Вырезания линка из текста. Регулярное выражение.
Отправлено: Hong от 22 Марта 2005, 20:39:59
Вот что то уже нашол но не совсем правильно работает. Первая ошибка с первым имайлом нет пробела, и потом неправильно переводятся 1,2,5,6 линки.

function change_string($str)
{
   $str = trim($str);
    $str = htmlspecialchars($str);
    $str = preg_replace(\'/\\s([^\\s]+\\@[^\\s]+\\.[^\\s]+)\\s/i\',\'$1\',$str);
    $str = preg_replace(\'=([^\\s]*)(http://www.|http://)(([^?]*)[^\\s]*)=\',\'\\\\2\\\\4\',$str);
    return $str;
}


Кто нибудь может исправить.

THX.
Cu.