1

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" 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);

这个页面已经有很多 img 标签了。所以我尝试使用 img 标签内的一些属性来获取特定图像的 src。我在 preg_match_all 中是不正确的。请纠正我在上面的 img 标签中获取源代码。

4

3 回答 3

3

.*?使用惰性而不是贪婪可能会更好.*

preg_match_all('/<img(.*?)\sonload="([^"]*)"/s',$con,$val);

并将第二个更改.*[^"]*

.*?匹配最少的字符直到下一次匹配(在这种情况下onload...),并[^"]*匹配引号之间的任何非引号字符。

于 2013-07-11T11:39:03.180 回答
0

要获取页面上的所有图像标签,使用 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
}
于 2013-07-11T16:27:22.567 回答
0

描述

该表达式将:

  • 验证图像标签的属性/值为data-imagesize="ppew"
  • 验证图像标签的属性/值为data-pid="ABCDEFGHIJ"
  • 捕获src属性值
  • 避免潜在的困难问题

.

<img\b(?=\s) # capture the open tag
(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\sdata-imagesize="ppew")  # validate data-imagesize exists with a specific value
(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\sdata-pid="ABCDEFGHIJ")  # validate data-pid exists with a specific value
(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\ssrc=['"]([^"]*)['"]?)  # capture the src attribute value
(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?> # get the entire  tag

在此处输入图像描述

例子

现场示例:http ://www.rubular.com/r/PBJ50cax7L

单行正则表达式:<img\b(?=\s)(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\sdata-imagesize="ppew")(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\sdata-pid="ABCDEFGHIJ")(?=(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\ssrc=['"]([^"]*)['"]?)(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\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
于 2013-07-11T13:28:09.240 回答