0

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

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 字符?

4

1 回答 1

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

于 2013-09-24T17:45:54.337 回答