Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP中的字符串获取html图像标记_Php_Regex_Preg Match - Fatal编程技术网

从PHP中的字符串获取html图像标记

从PHP中的字符串获取html图像标记,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试从给定字符串获取HTML图像标记url。我使用的是PHP方法preg\u match(“/src=\”([^\s\“]+)/”,$body,$matches)这在大多数情况下都很好,但是我在从以下链接获取url时遇到了问题 src=http://4.bp.blogspot.com/-LqmY1y4DCO0/T39EoCmzfoI/AAAAAAAACp0/TRKmdPmhJ90/s640/how+to+make+cheesecake+carrots,+orange+cheesecake+

我正在尝试从给定字符串获取HTML图像标记url。我使用的是PHP方法
preg\u match(“/src=\”([^\s\“]+)/”,$body,$matches)这在大多数情况下都很好,但是我在从以下链接获取url时遇到了问题

src=http://4.bp.blogspot.com/-LqmY1y4DCO0/T39EoCmzfoI/AAAAAAAACp0/TRKmdPmhJ90/s640/how+to+make+cheesecake+carrots,+orange+cheesecake+recipe,+recipes,+Easter+dessert+.jpg

请解释失败的原因。

您的测试字符串在src=之后没有“字符”,而您的正则表达式需要它,因此它不匹配。 如果您想测试正则表达式,我建议您使用程序RegexCoach,它会突出显示匹配项,并允许您逐步完成匹配过程,以便您可以轻松看到它失败的地方。

使用DOM加载

$dom = new DOMDocument();
$dom->loadHTML($var);

$xpath = new DOMXPath($dom);
$img = $xpath->query('//img[@src]');

if(count($img)>0)
{
    foreach($img as $i)
        echo $i->getAttribute('src');
}
用这个正则表达式试试:)


这真的是一个Java问题吗?
preg_match()
不是一个符合默认Java命名标准(即
pregMatch()的方法);
会更正确。很抱歉意外添加了Java。感谢您的更正。用正则表达式解析HTML或HTML属性是个坏主意。您确定不能用DOM方法完成此操作吗?(在PHP中)我发现另一篇文章也提到了同样的问题,但我得到了一个错误。我不懂PHP,所以非常感谢你的帮助。很抱歉,我是一个初学者。你知道如何在Drupal的一个模块中集成它吗?很抱歉,我放了img标签,但你没有使用任何特定的标签,请参阅下一个答案。非常感谢。尽管它仍然没有拉imag我在blogger平台上尝试了两个博客。一个有效,一个无效。我想知道是不是他们的博客设置不允许提取图像?啊啊,我想是因为一些标签介于引号之间。答案是95%可以,根据我的说法,只有在名称之间有空格的图像名称没有完全显示出来。
preg_match_all("/src=([^\\s]+)/", $body, $m);
print_r($a);