Php 用于在文本中匹配URL的方法
在PHP中,建议使用什么方法来匹配文本体中的所有URL(即,一个表单$\u POST textarea而不是一个“单词”字符串) 我正在寻找一种方法,它可以匹配绝大多数的URL,而不是一个超标准兼容的包罗万象。我喜欢匹配的示例:Php 用于在文本中匹配URL的方法,php,Php,在PHP中,建议使用什么方法来匹配文本体中的所有URL(即,一个表单$\u POST textarea而不是一个“单词”字符串) 我正在寻找一种方法,它可以匹配绝大多数的URL,而不是一个超标准兼容的包罗万象。我喜欢匹配的示例: www.google.com 谷歌网站 具有各种查询数据的上述任一项(即/?foo=bar) 理想情况下,结果将放入关联数组中 我知道parse_url不太合适。我听说使用正则表达式充满了问题。但我也听说filter_var存在重大问题,其中最重要的问题是需要一
- www.google.com
- 谷歌网站
- 具有各种查询数据的上述任一项(即/?foo=bar)
谢谢你在你的情况下,我认为针对多个正则表达式进行测试是一种可行的方法 以下是一些与www.google.com相匹配的正则表达式示例:
/^google[.]com/
/^http:\/\/www[.]google[.]com/
/^google[.]com/
/^http:\/\/www[.]google[.]com/
- 它将以文本形式提取上述所有URL
<?php
$string='http://www.google.com?q=1000
http://google.com?xlkd=0
www.google.com?asdfsdf=asdf
google.com?234324';
preg_match_all('#\b(?:http(?:s)?:\/\/)?(?:www\.)??[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $string, $match);
echo "<pre>";
print_r($match);
希望它会有帮助它将以文本形式提取上述所有URL
<?php
$string='http://www.google.com?q=1000
http://google.com?xlkd=0
www.google.com?asdfsdf=asdf
google.com?234324';
preg_match_all('#\b(?:http(?:s)?:\/\/)?(?:www\.)??[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $string, $match);
echo "<pre>";
print_r($match);
希望这会有帮助正则表达式应该适合于此。然而,“google.com”可能会导致许多误报。你应该考虑匹配一个有效的TLD列表。然而,“google.com”可能会导致许多误报。你应该考虑匹配一个有效的TLD列表。谢谢,这是一个很好的开始,但是这也似乎与非URL文本匹配。在多维的第二个项目中,是的,但是看起来你只能使用<代码> $Matt(0)< /代码>谢谢,这是一个好的开始。但这似乎也与非url文本匹配。在多维文本的第二项中,是的,但似乎只能使用
$match[0]