使用preg_match匹配IMG标记的SRC属性

Kyo*_*ter 14 php regex parsing src preg-match

我正在尝试运行preg_match从文章中的第一个IMG标记中提取SRC属性(在这种情况下,存储在$ row-> introtext中).

preg_match('/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\']*)/i', $row->introtext, $matches);
Run Code Online (Sandbox Code Playgroud)

而不是得到类似的东西

images/stories/otakuzoku1.jpg
Run Code Online (Sandbox Code Playgroud)

<img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku's store" />
Run Code Online (Sandbox Code Playgroud)

我得到了

0
Run Code Online (Sandbox Code Playgroud)

正则表达式应该是正确的,但我不知道为什么它似乎匹配border属性而不是src属性.

或者,如果您有耐心阅读这一点而不直接跳到回复字段并输入"使用HTML/XML解析器",那么可以推荐一个很好的教程,因为我很难找到一个适用于PHP 4.

PHP 4.4.7

Cal*_*ebD 38

你的表达不正确.尝试:

preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $row->introtext, $matches);
Run Code Online (Sandbox Code Playgroud)

请注意删除img和src周围的括号以及其他一些清理.

  • 作为附注,$ matches [0]包含完整的IMG标记,$ matches [1]包含源URI. (2认同)

GZi*_*ipp 5

这是使用内置函数(php> = 4)的方法:

$parser = xml_parser_create();
xml_parse_into_struct($parser, $html, $values);
foreach ($values as $key => $val) {
    if ($val['tag'] == 'IMG') {
        $first_src = $val['attributes']['SRC'];
        break;
    }
}

echo $first_src;  // images/stories/otakuzoku1.jpg
Run Code Online (Sandbox Code Playgroud)