0

我有一个这样的字符串:

$string = "some text
  http://dvz.local/index/index/regionId/28
        http://stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php
         http://192.168.3.192/roadmap_page.php#qwe";

需要获取所有链接。

我试过这样:/http:\/\/(.*)[|\s]?/

返回:

array(2) {
  [0] =>
  array(3) {
    [0] =>
    string(42) "http://dvz.local/index/index/regionId/28\r\n"
    [1] =>
    string(77) "http://stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php\r\n"
    [2] =>
    string(41) "http://192.168.3.192/roadmap_page.php#qwe"
  }
  [1] =>
  array(3) {
    [0] =>
    string(34) "dvz.local/index/index/regionId/28\r"
    [1] =>
    string(69) "stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php\r"
    [2] =>
    string(34) "192.168.3.192/roadmap_page.php#qwe"
  }
}

编辑1:期望:

array(2) {
  [0] =>
  array(3) {
    [0] =>
    string(42) "http://dvz.local/index/index/regionId/28"
    [1] =>
    string(77) "http://stuff.kiev.ua/roadmap_page.php"
    [2] =>
    string(77) "http://192.168.3.192/roadmap_page.php"
    [3] =>
    string(41) "http://192.168.3.192/roadmap_page.php#qwe"
  }
  [1] =>
  array(3) {
    [0] =>
    string(34) "dvz.local/index/index/regionId/28"
    [1] =>
    string(69) "stuff.kiev.ua/roadmap_page.php"
    [2] =>
    string(69) "192.168.3.192/roadmap_page.php"
    [3] =>
    string(34) "192.168.3.192/roadmap_page.php#qwe"
  }
}
4

4 回答 4

3

试试这个:

/http:\/\/([^\s]+)/
于 2012-06-20T09:18:07.700 回答
2

尝试这个:

preg_match_all('|http://([^\s]*)|', $string, $matches);

var_dump($matches);
于 2012-06-20T09:22:24.093 回答
0

许多页面只有到主文档的相对链接,(因此没有 http(s):// ... 解析),对于以下工作正常,按href属性拆分:

preg_match_all('|href="([^\s]*)"><\/a>|', $html, $output_array);

或者更简单:

preg_match_all('|href="(.*?)"><\/a>|', $html, $output_array);

示例输出:

 [0]=>
    string(56) "/broadcast/bla/xZr300"
    [1]=>
    string(50) "/broadcast/lol/fMoott"
于 2020-05-22T02:57:57.373 回答
0

来自文本的所有链接

http[s]?[^\s]*

于 2019-02-24T14:49:34.840 回答