2013-09-24 3 views
0

Я работаю над появлением синтаксиса регулярных выражений, чтобы иметь дело с созданием определенных шаблонов строк в интерактивных ссылках из формы. Возврат каретки вызывает проблемы с моим шаблоном регулярного выражения и требует некоторой помощи, чтобы понять, как их опустить. Например, если я введу этот текст в свою текстовую область;Синтаксис регулярных выражений для обработки возвратов каретки в php

http://www.google.com 
http://www.google.com 
www.google.com 
google.com 

Это выход, прежде чем мой шаблон регулярного выражения увидит его;

http://www.google.com\r\nhttp://www.google.com\r\nwww.google.com\r\ngoogle.com 

Мне нужно убрать из гиперссылок символы \ r \ n. Мое регулярное выражение выглядит так:

function make_links_clickable($message) 
    { 
    return preg_replace('!(((.*www\.)?(f|ht)tp(s)?://)?[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;//=]+)!i', '<a href="http://$0" target="_blank">$0</a>', $message); 
    } 

Может ли кто-нибудь сказать мне, как удалить любые ведущие символы \ r \ n в регулярном выражении?

+0

Почему вы должны удалить их? Ваше регулярное выражение не соответствует им. – Barmar

ответ

0

Простым способом является разделение на новые строки и запуск вашего регулярного выражения на каждой части. Обратите внимание:

function make_links_clickable($message) 
{ 
     $result = array(); 
     foreach(explode(PHP_EOL,$message) as $m) 
     { 
      $result[] = preg_replace('!(((.*www\.)?(f|ht)tp(s)?://)?[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;//=]+)!i', '<a href="http://$0" target="_blank">$0</a>', $m); 
     } 
     return join(PHP_EOL,$result); 
} 

В качестве альтернативы можно использовать preg_filter

+0

Разве он не должен делиться на '' \ r \ n "'? – Barmar

+0

Зачем это необходимо? Регулярное выражение не совпадает с новыми символами. – Barmar

+0

@Byron. Когда я пытаюсь использовать синтаксис в вашем решении, он возвращает ошибку (жалуется на «in» в foreach). Есть идеи? – Kimomaru

Смежные вопросы