我正在尝试匹配 src="URL" 标签,如下所示:
src="http://3.bp.blogspot.com/-ulEY6FtwbtU/Twye18FlT4I/AAAAAAAAAEE/CHuAAgfQU2Q/s320/DSC_0045.JPG"
基本上,任何在 src 属性内具有某种 bp.blogspot URL 的内容。我有以下内容,但仅部分有效:
preg_match('/src=\"(.*)blogspot(.*)\"/', $content, $matches);
此接受所有 blogspot url 并允许转义引号:
src="((?:[^"]|(?:(?<!\\)(?:\\\\)*\\"))+\bblogspot\.com/(?:[^"]|(?:(?<!\\)(?:\\\\)*\\"))+)"
URL 被捕获以匹配组 1。
您需要使用额外的
\
(每次出现!)来转义 /
和 \
,以便在 preg_match(…)
中使用。
说明:
src=" # needle 1
( # start of capture group
(?: # start of anonymous group
[^"] # non-quote chars
| # or:
(?:(?<!\\)(?:\\\\)*\\") # escaped chars
)+ # end of anonymous group
\b # start of word (word boundary)
blogspot\.com/ # needle 2
(?: # start of anonymous group
[^"] # non-quote chars
| # or:
(?:(?<!\\)(?:\\\\)*\\") # escaped chars
)+ # end of anonymous group
) # end of capture group
" # needle 3
使用 XPath 仅定位 stc 值包含
blogspot
的 img 标签。
代码:(演示)
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$result = [];
foreach ($xpath->query("//img[contains(@src, 'blogspot')]/@src") as $src) {
$result[] = $src->nodeValue;
}
var_export($result);