在文本中匹配URL的方法

时间:2016-06-17 04:05:42

标签: php

在PHP中,建议的方法是匹配文本正文中的所有URL(即表单$ _POST textarea而不是单词'字符串)?

我正在寻找一种与大多数网址匹配的方法,而不是符合超级标准的全部网址。我喜欢匹配的示例:

理想情况下,结果将放入关联数组中。

我知道parse_url并不适合。而且我听说使用正则表达式充满了问题。然而,我也听说filter_var存在重大问题,其中最重要的是需要一个方案。你们都用什么技术?

谢谢

2 个答案:

答案 0 :(得分:0)

在您的情况下,我认为针对多个正则表达式进行测试是可行的方法。

以下是一些应与www.google.com匹配的示例正则表达式:

  • /^google[.]com/
  • /^http:\/\/www[.]google[.]com/

答案 1 :(得分:0)

它会在文本中提取所有上述网址。

<?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);

输出是:

Array
(
    [0] => Array
        (
            [0] => http://www.google.com?q=1000
            [1] => http://google.com?xlkd=0
            [2] => www.google.com?asdfsdf=asdf
            [3] => google.com?234324
        )

    [1] => Array
        (
            [0] => 0
            [1] => 0
            [2] => f
            [3] => 4
        )

)

希望它会有所帮助