在PHP中处理回车的正则表达式语法

时间:2013-09-24 17:41:12

标签: php regex

我一直致力于提出正则表达式语法,以处理从表单中将某些字符串模式转换为可点击链接的问题。回车导致我的正则表达式模式出现问题,需要一些帮助才能理解如何省略它们。例如,如果我将此文本输入我的文本区域;

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а-яА-Я()0-9@:%_+.~#?&;//=]+)!i', '<a href="http://$0" target="_blank">$0</a>', $message);
    }

有谁能告诉我如何删除正则表达式中的任何前导\ r \ n字符?

1 个答案:

答案 0 :(得分: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а-яА-Я()0-9@:%_+.~#?&;//=]+)!i', '<a href="http://$0" target="_blank">$0</a>', $m);
       }
       return join(PHP_EOL,$result);
}

或者您可以使用preg_filter