ili*_*ica 10 html php string parsing image
嗨,
我找到了从字符串中获取第一张图片的解决方案:
preg_match('~<img[^>]*src\s?=\s?[\'"]([^\'"]*)~i',$string, $matches);
Run Code Online (Sandbox Code Playgroud)
但我无法设法从字符串中获取所有图像.
还有一件事......如果图像包含替代文本(alt属性)如何获取它并保存到另一个变量?
在此先感谢,
Ilija
cle*_*tus 32
不要使用正则表达式执行此操作.而是解析HTML.看一下使用PHP和DOM解析HTML.这是PHP 5.2.x中的标准功能(可能更早).基本上获取图像的逻辑大致是:
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
echo $image->getAttribute('src');
}
Run Code Online (Sandbox Code Playgroud)
这对于适应寻找图像应该是微不足道的.
这是我尝试但无法获得src的打印值
$dom = new domDocument;
/*** load the html into the object ***/
$dom->loadHTML($html);
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the table by its tag name ***/
$images = $dom->getElementsByTagName('img');
/*** loop over the table rows ***/
foreach ($images as $img)
{
/*** get each column by tag name ***/
$url = $img->getElementsByTagName('src');
/*** echo the values ***/
echo $url->nodeValue;
echo '<hr />';
}
Run Code Online (Sandbox Code Playgroud)
编辑:我解决了这个问题
$dom = new domDocument;
/*** load the html into the object ***/
$dom->loadHTML($string);
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach($images as $img)
{
$url = $img->getAttribute('src');
$alt = $img->getAttribute('alt');
echo "Title: $alt<br>$url<br>";
}
Run Code Online (Sandbox Code Playgroud)