PHP 使用 preg_match_all 获取所有链接和图像

Dol*_*rma 1 php preg-match-all

从新闻网站我们有很多标签,例如:

<a class="picLink" target="_blank" href="/EN/news/397423/MY-TEST-NEWS">
   <img class="fr" width="115" style="margin:6px 0px 0px 8px;width: 115px;" src="http://sample.com/files/EN/news/369326_276.jpg" alt="MY TEST NEWS !">
</a>
Run Code Online (Sandbox Code Playgroud)

我想从中获取href图像src和属性值。alt

我的简单代码不正确:

<meta charset='UTF-8' />
<?php
error_reporting(1);
$handle='http://sample.com';
$handle = file_get_contents($handle);
preg_match_all('/<a[^>]+class="titr1y"[^>] href="(.*?)"*><img class="[^>]" width="[^>]" style="[^>]" src="(.*?)" alt="(.*?)"*><\/a>/si', $handle, $matching_data);

print_r($matching_data);
?>
Run Code Online (Sandbox Code Playgroud)

请帮我改正。

ɹɐq*_*ɹǝɟ 5

你可以用这个得到它

$re = '/(alt|href|src)=("[^"]*")/'; 
$str = '<a class="picLink" target="_blank" href="/EN/news/397423/MY-TEST-NEWS">\n   <img class="fr" width="115" style="margin:6px 0px 0px 8px;width: 115px;" src="http://sample.com/files/EN/news/369326_276.jpg" alt="MY TEST NEWS !">\n</a>\n<a class="picLink" target="_blank" href="/EN/news/397423/MY-TEST-NEWS">\n   <img class="fr" width="115" style="margin:6px 0px 0px 8px;width: 115px;" src="http://sample.com/files/EN/news/369326_276.jpg" alt="MY TEST NEWS !">\n</a>'; 

preg_match_all($re, $str, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

输出

(
    [0] => Array
        (
            [0] => href="/EN/news/397423/MY-TEST-NEWS"
            [1] => src="http://sample.com/files/EN/news/369326_276.jpg"
            [2] => alt="MY TEST NEWS !"
            [3] => href="/EN/news/397423/MY-TEST-NEWS"
            [4] => src="http://sample.com/files/EN/news/369326_276.jpg"
            [5] => alt="MY TEST NEWS !"
        )

    [1] => Array
        (
            [0] => href
            [1] => src
            [2] => alt
            [3] => href
            [4] => src
            [5] => alt
        )

    [2] => Array
        (
            [0] => "/EN/news/397423/MY-TEST-NEWS"
            [1] => "http://sample.com/files/EN/news/369326_276.jpg"
            [2] => "MY TEST NEWS !"
            [3] => "/EN/news/397423/MY-TEST-NEWS"
            [4] => "http://sample.com/files/EN/news/369326_276.jpg"
            [5] => "MY TEST NEWS !"
        )

)
Run Code Online (Sandbox Code Playgroud)

在 array[2] 中你将得到所需的值