我正在寻找某种形式的输入安全性,我正在对一个项目进行研究。 基本上我希望标记文本,如果用户输入任何形式的URL。PHP在字符串中查找任何形式的URL
IE“欲了解更多我的照片访问myhotpic.net的”
因此,它会检测到一个URL,然后我可以标志通过工作人员验证字符串。 所以我需要检查任何形式的URL。
还有一个类似的问题在这里 Finding urls from text string via php and regex? 与答案。但我已经厌倦了这种各种字符串,我没有得到预期的结果。
例如
$pattern = '#(www\.|https?:\/\/){?}[a-zA-Z0-9]{2,254}\.[a-zA-Z0-9]{2,4}(\S*)#i'; $count = preg_match_all($pattern, 'http://www.Imaurl.com', $matches, PREG_PATTERN_ORDER);
收益为
array(3) {
[0]=>
array(0) {
}
[1]=>
array(0) {
}
[2]=>
array(0) {
}
}
相匹配,并且没有错误通过preg_last_error()
返回这是为什么不工作? Regex中是否有错误?当其他用户使用它时,我会认为它没问题。
我似乎无法为其他地方的问题找到合适的答案。
把'{?}'变成只是'?',它似乎工作正常。不知道'{?}'应该做什么;我从来没有见过这样的事情。 – sgroves
我只想找“www”,“http”,任何东西。[a-z] {2,3}等。如果只想检测url并且不需要实际提取它,这应该可以正常工作。 – MightyPork
@mightypork如果其中一个字符串包含文字谈论HTTP协议?或'www'用来代表笑声?我不确定这么简单是最好的方法。使用完整的正则表达式没有任何问题;这个不是很复杂。 – sgroves