Img 标签 src 匹配 PHP 正则表达式

问题描述 投票:0回答:2

我正在尝试匹配 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);
php regex preg-match
2个回答
3
投票

此接受所有 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

0
投票

使用 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);
© www.soinside.com 2019 - 2024. All rights reserved.