我一直在努力解决这个问题很长一段时间,我似乎无法找到解决方案。我有以下正则表达式用于匹配URL,这些表达似乎完美无缺,直到我在新行上发布一堆链接,它们之间没有空格。
(http|ftp)+(s)?:(\/\/)((\w|\.|\-)+)(\/)?(\S)+
我在几个正则表达式测试中尝试了这个,它似乎正确选择了URL,与我的应用程序中的代码不同。这让我觉得代码肯定有问题,我开始调试了。我在echo
编辑我正在应用正则表达式的字符串时发现的是:
http://www.google.com/\r\nhttp://www.google.com/\r\nhttp://www.google.com/
我从未在浏览器中看到新行\r\n
显示为文本。这让我觉得还有其他东西可以在这个字符串上得到它。我遵循了我的逻辑,结果是这个字符串从textarea
元素直接进入$_POST
并且没有在任何地方被操纵。
可能导致这些\r\n
以文字形式显示的内容以及如何匹配用户可能以新线分隔的网址?
我真的非常绝望,我真的很感谢你的帮助。
答案 0 :(得分:2)
如果你看到了
http://www.google.com/\r\nhttp://www.google.com/\r\nhttp://www.google.com/
当你回显字符串时,这意味着你回复的实际字符串是:
http://www.google.com/\\r\\nhttp://www.google.com/\\r\\nhttp://www.google.com/
即。反斜杠已被转义,导致它们不被视为换行符。这意味着您只在正则表达式中获得一个匹配。
请查看此问题:Why are $_POST variables getting escaped in PHP?,了解您的请求可能会被转义的原因。