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