Php 使用preg_match_all image source和用户定义的标记
HTML代码Php 使用preg_match_all image source和用户定义的标记,php,regex,preg-match-all,Php,Regex,Preg Match All,HTML代码 <img src="http://website/image/ngshjk.jpeg" onload="img_onload(this);" onerror="img_onerror(this);" data-pid="dynamicvalue" data-imagesize="ppew" data-error-url="http://img.comb/6/z2default.jpg" class="small_image imageZoom " alt="image" ti
<img src="http://website/image/ngshjk.jpeg" onload="img_onload(this);" onerror="img_onerror(this);" data-pid="dynamicvalue" data-imagesize="ppew" data-error-url="http://img.comb/6/z2default.jpg" class="small_image imageZoom " alt="image" title="" id="visible-image-small" rel="dynamicvalue" data-zoom-src="http://img.comb/6/z21347.jpeg" style="display: inline;">
PHP代码
preg_match_all('/<img(.*) onload="(.*)" \/s',$con,$val);
preg\u match\u all('/您最好使用懒惰的*?
而不是贪婪的*
preg_match_all('/<img(.*?)\sonload="([^"]*)"/s',$con,$val);
preg_match_all('/Description
此表达式将:
- 验证图像标记的属性/值是否为
data imagesize=“ppew”
- 验证图像标记的属性/值是否为
data pid=“ABCDEFGHIJ”
- 捕获
src
属性值
- 避免潜在的困难问题
获取整个标记
例子
实例:
单行正则表达式:=]|='[^']*'.[^']*'.[^']*'.[^'\s]*)*“\s?\/?>
示例文本
注意,第一行有一些潜在的问题
<img onmouseover=' data-imagesize="ppew" ; data-pid="ABCDEFGHIJ" ; funSwap(data-imagesize, data-pid) ; ' src="http://website/NotTheDroidYourLookingFor.jpeg" onload="img_onload(this);" onerror="img_onerror(this);" data-pid="jihgfedcba" data-imagesize="ppew" />
<img src="http://website/someurl.jpeg" onload="img_onload(this);" onerror="img_onerror(this);" data-pid="ABCDEFGHIJ" data-imagesize="ppew" />
捕获组
[0] = <img src="http://website/someurl.jpeg" onload="img_onload(this);" onerror="img_onerror(this);" data-pid="ABCDEFGHIJ" data-imagesize="ppew" />
[1] = http://website/someurl.jpeg
[0]=
[1] = http://website/someurl.jpeg
要获取页面上的所有图像标记,使用HTML解析工具可能会容易得多,如:
// load your html string
$dom = new DOMDocument();
$dom->loadHTML($your_html_here);
// find all the img tags
$imgs = $dom->getElementsByTagName('img');
// cycle through all image tags
foreach($imgs as $img) {
$src = $img->getAttribute("src");
// do something
}
@MohamedFawaskhan是否也要获取src属性?如果是这样,您可以使用。否则,恐怕我不明白你想用正则表达式做什么。你最好找一个HTML解析器,而不是正则表达式,因为HTML可能非常不稳定。这个所需的图像标记有什么特别之处,与所有其他标记有何不同?这就是我无法做到的原因。我确信其他img标记没有onload=“img_onload(this);”是否最好简单地将所有图像标记作为列表查找,然后在代码的后面,简单地查看它们以查找有趣的标记?我在创建表达式方面很弱,但我能理解您的代码。我编辑了我的问题,请看一下。
// load your html string
$dom = new DOMDocument();
$dom->loadHTML($your_html_here);
// find all the img tags
$imgs = $dom->getElementsByTagName('img');
// cycle through all image tags
foreach($imgs as $img) {
$src = $img->getAttribute("src");
// do something
}