Автор оригинала: x-yuri
[^@]{1} - то же самое, что [^@]
согласен
зачем ты добавил модификатор i, если в шаблонах продолжаешь писать A-Za-z?
согласен
чем
[0-9A-Za-z_\.\-/]+?[^@]{1}[0-9A-Za-z_\.\-/]+
лучше
[0-9a-z_.-/]+
?
согласен
добавлением / в шаблон, ты учитываешь наличие пути к скрипту?
да
а [A-Za-z]{2,4} у тебя теперь обозначает не только домен верхнего уровня, но и расширение скрипта? ты просто подстраивашь шаблон, под свои тестовые строки
не знаю, но хочется удалить полностью ссылку, если например она имеет такой вид
http://www.site.ru/object.php?id=2720
а пробел в начале выражения лучше заменить на \b
заменять так нельзя - email начинает вырезаться
p.s. если ты хочешь учитывать все возможные варианты URL тебе стоит посмотреть rfc 2396
наверно мне пока достаточно [A-Za-z]{2,4} таких доменов верхнего уровня
Сейчас возникло 2 вопросы, которые пытаюсь решить:
1) хочется удалить полностью ссылку, если например она имеет такой вид
http://www.site.ru/object.php?id=2720
пока вырезается все до знака вопроса - id=2720 - остается
Пытаюсь поставить в проверку знак вопроса
$Text = preg_replace("# (
http://)?[0-9a-z_.-/]+?[^@][0-9a-z_.-/?]+\.[a-z]{2,4}#is", "", $Text);
но результата нет
2) удаление url происходит только в том случае - если перед ним есть пробел, а если пробела нет (например урл сразу пишется с новой строки) - то не работает
Делаю так:
$Text = preg_replace("#\n(
http://)?[0-9a-z_.-/]+?[^@][0-9a-z_.-/]+\.[a-z]{2,4}#is", "", $Text);
тогда удаляет
НО мне приходится писать 2 раза, чтобы удалить как в случае если пробел перед строкой так и если новая строка
$Text = preg_replace("# (
http://)?[0-9a-z_.-/]+?[^@][0-9a-z_.-/]+\.[a-z]{2,4}#is", "", $Text);
$Text = preg_replace("#\n(
http://)?[0-9a-z_.-/]+?[^@][0-9a-z_.-/]+\.[a-z]{2,4}#is", "", $Text);
Пытаюсь объединить:
$Text = preg_replace("# |\n(
http://)?[0-9a-z_.-/]+?[^@][0-9a-z_.-/]+\.[a-z]{2,4}#is", "", $Text);
Но не работает