从 PHP 文本中提取图像源 - 需要 preg_match_all

发布于 2024-10-19 09:01:25 字数 489 浏览 1 评论 0原文

我有一个小问题,因为我的 preg_match_all 运行不正常。

我想要做的是从wordpress中提取post_content中所有图像的src参数,它是一个字符串 - 不是完整的html文档/DOM(因此不能使用文档解析器功能)

我是目前使用下面的代码,不幸的是太不整洁了,仅适用于 1 个图像 src,我想要该字符串中的所有图像源,

preg_match_all( '/src="([^"]*)"/', $search->post_content, $matches);

if ( isset( $matches ) )
{  

foreach ($matches as $match) 
{

if(strpos($match[0], "src")!==false)
{
$res = explode("\"", $match[0]);
echo $res[1];
}

}

}

有人可以在这里帮忙吗...

I have a little issue as my preg_match_all is not running properly.

what I want to do is extract the src parameter of all the images in the post_content from the wordpress which is a string - not a complete html document/DOM (thus cannot use a document parser function)

I am currently using the below code which is unfortunately too untidy and works for only 1 image src, where I want all image sources from that string

preg_match_all( '/src="([^"]*)"/', $search->post_content, $matches);

if ( isset( $matches ) )
{  

foreach ($matches as $match) 
{

if(strpos($match[0], "src")!==false)
{
$res = explode("\"", $match[0]);
echo $res[1];
}

}

}

can someone please help here...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日裸衫吸 2024-10-26 09:01:25

使用正则表达式解析 HTML 文档很容易出错。就像您的情况一样,不仅 IMG 元素具有 < code>SRC 属性(事实上,它根本不需要是 HTML 属性)。除此之外,属性值也可能没有用双引号引起来。

最好使用 HTML DOM 解析器,例如 PHP 的 DOMDocument 及其方法:

$doc = new DOMDocument();
$doc->loadHTML($search->post_content);
foreach ($doc->getElementsByTagName('img') as $img) {
    if ($img->hasAttribute('src')) {
        echo $img->getAttribute('src');
    }
}

Using regular expressions to parse an HTML document can be very error prone. Like in your case where not only IMG elements have an SRC attribute (in fact, that doesn’t even need to be an HTML attribute at all). Besides that, it also might be possible that the attribute value is not enclosed in double quote.

Better use a HTML DOM parser like PHP’s DOMDocument and its methods:

$doc = new DOMDocument();
$doc->loadHTML($search->post_content);
foreach ($doc->getElementsByTagName('img') as $img) {
    if ($img->hasAttribute('src')) {
        echo $img->getAttribute('src');
    }
}
眼眸印温柔 2024-10-26 09:01:25

您可以使用带有 HTML 字符串的 DOM 解析器,不需要有完整的 HTML 文档。 http://simplehtmldom.sourceforge.net/

You can use a DOM parser with HTML strings, it is not necessary to have a complete HTML document. http://simplehtmldom.sourceforge.net/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文