【问题标题】:Regex and carriage returns正则表达式和回车
【发布时间】:2013-09-29 06:10:21
【问题描述】:

我正在解决一个奇怪的问题,即 Web 表单中的回车导致我的正则表达式语句混乱。我是正则表达式的新手,所以请原谅任何迟钝的问题。

当我的表单从文本区域发送数据输入时,以下函数用于将任何符合条件的字符串转换为超链接:

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

问题似乎出在第二个函数上。当我使用这些函数时,输出如下所示:

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

第三个输出有一个'n'开头(并且它的超链接也乱了),这似乎来自回车。不知道这是怎么回事。

【问题讨论】:

  • 您使用的表单是否有 PUT 或 GET?
  • @Leptonator 你的意思是 PUT 还是 POST(有区别)?无论如何,您认为这有什么关系?
  • 是的 - 我认为问题不在于你如何回车 - 但如果按 Enter 提交表单..
  • 问题是(www\.)?...虽然还没有好的解决方案...
  • а-яА-Я?不。至少如果那是拉丁语a,你会得到比你想象的更多的东西。也不要使用两个替换。那会坏掉的。一次性完成。

标签: php regex


【解决方案1】:

我不是很喜欢它,但是您是否有可能必须两次转义反斜杠:

'!(www\\.)?[a-z0-9\-] etc.

这可能是问题所在。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多