PHP 正则表达式:删除带有“image”类的 div

发布于 2024-12-14 17:19:59 字数 285 浏览 2 评论 0原文

我需要使用以下模式删除变量中的所有图像。 (使用 PHP)。

<div class="float-right image"> 
  <img class="right" src="http://www.domain.com/media/images/image001.png" alt="">
</div>

所有 div 标签都会有一个 image 类,但浮动右侧可能会有所不同。我似乎无法让正则表达式工作,请帮助我。

I need to remove all images in a variable using the following pattern. (With PHP).

<div class="float-right image"> 
  <img class="right" src="http://www.domain.com/media/images/image001.png" alt="">
</div>

All the div tags will have an image class, but the float-right might vary. I can't seem to get the regex working, please help me.

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

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

发布评论

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

评论(2

烟雨扶苏 2024-12-21 17:20:07

这个正则表达式与您的模式匹配:

(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>

我已经针对多个字符串对其进行了测试。它将适用于:

<div class="anything"> 
<img class="blah" src="anything" alt="blah">
</div>

,您可以在其中将“blah”和“anything”字符串替换为任何内容。
此外,正则表达式中的各种 \W* 允许字符串之间有不同的间距。

你说你想用 PHP 来做这件事。

这将从存储在 $my_html 变量中的页面中删除所有匹配的模式。

$my_html=preg_replace('%(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>%m', '', $my_html);

我想这就是你要找的东西?

This regex matches your pattern:

(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>

I have tested it against several strings. It will work on:

<div class="anything"> 
<img class="blah" src="anything" alt="blah">
</div>

, where you can replace the "blah" and "anything" strings with anything.
Also, the various \W* in the regex allow for different spacing from string to string.

You said you want to do this in PHP.

This will zap all the matched patterns from a page stored in the $my_html variable.

$my_html=preg_replace('%(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>%m', '', $my_html);

I think this is what you were looking for?

终陌 2024-12-21 17:20:06

使用 DOM 而不是正则表达式。例子:

<?php
$doc = new DOMDocument();
$doc->loadHTML('<div class="float-right image"> 
  <img class="right" src="http://www.domain.com/media/images/image001.png" alt="">
</div>');

foreach( $doc->getElementsByTagName("div") as $old_img ) {
    $img = $doc->createElement("img");
    $src = $doc->createAttribute('src');
    $class = $doc->createAttribute('class');
    $src->value = 'http://your.new.link';
    $class->value = 'right';
    $img->appendChild($src);
    $img->appendChild($class);
    $doc->replaceChild($img, $old_img);
}

echo $doc->saveHTML();
?>

Use a DOM instead of regex. Example:

<?php
$doc = new DOMDocument();
$doc->loadHTML('<div class="float-right image"> 
  <img class="right" src="http://www.domain.com/media/images/image001.png" alt="">
</div>');

foreach( $doc->getElementsByTagName("div") as $old_img ) {
    $img = $doc->createElement("img");
    $src = $doc->createAttribute('src');
    $class = $doc->createAttribute('class');
    $src->value = 'http://your.new.link';
    $class->value = 'right';
    $img->appendChild($src);
    $img->appendChild($class);
    $doc->replaceChild($img, $old_img);
}

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