正则表达式语法,用于处理 php 中的回车


Regex syntax to deal with carriage returns in 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'字符。 我的正则表达式看起来像这样;

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

一个简单的方法是在新行上拆分,并在每个部分上运行正则表达式。观察:

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