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]?[^ \ s] *

于 2019-02-24T14:49:34.840 に答える
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 に答える