【发布时间】:2013-06-27 14:13:32
【问题描述】:
我创建的正则表达式模式有什么问题:
$link_image_pattern = '/\<a\shref="([^"]*)"\>\<img\s.+\><\/a\>/';
preg_match_all($link_image_pattern, $str, $link_images);
我正在尝试做的是匹配其中包含图像的所有链接。
但是当我尝试输出 $link_images 时,它包含第一个索引内的所有内容:
<pre>
<?php print_r($link_images); ?>
</pre>
标记看起来像这样:
数组 ( [0] => 数组 ([0] => "
<p> </p>
<p><strong><a href="url">Title</a></strong></p>
<p>Desc</p>
<p><a href="{$image_url2}"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="{$image_url2}" width="569" height="409"></a></p>
但是当输出匹配的内容时,它只是返回匹配模式的第一个字符串加上页面中的所有其他标记,如下所示:
<a href="{$image_url}"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="{$image_url}" width="568" height="347"></a></p>
<p> </p>
<p><strong><a href="url">Title</a></strong></p>
<p>Desc</p>
<p><a href="{$image_url2}"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="{$image_url2}" width="569" height="409"></a></p>")
【问题讨论】:
-
index0 将包含与表达式匹配的整个字符串
-
使用 DomDocument 库读取 HTML 并获取其数据。
-
参考上述问题并参考使用 html 解析器的答案 NOT regex
-
Regex 不是解析HTML的好方法,看下面的回答Parse anchor tags which have img tag as child element