Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式:使用类“删除div”;“图像”;_Php_Regex_Replace_Match - Fatal编程技术网

PHP正则表达式:使用类“删除div”;“图像”;

PHP正则表达式:使用类“删除div”;“图像”;,php,regex,replace,match,Php,Regex,Replace,Match,我需要使用以下模式删除变量中的所有图像。(使用PHP) 所有div标记都将有一个image类,但右浮动可能会有所不同。我似乎无法让正则表达式工作,请帮帮我 使用DOM而不是正则表达式。例如: <?php $doc = new DOMDocument(); $doc->loadHTML('<div class="float-right image"> <img class="right" src="http://www.domain.com/media/im

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



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

使用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();
?>

使用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();
?>

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

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

我想这就是你想要的?

这个正则表达式符合你的模式:

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

我想这就是你想要的?

你试过使用HTML解析器吗?阅读这个问题。你试过使用HTML解析器吗?阅读这个问题。嘿,我确实试过了,但在服务器上似乎不起作用。但基本上,我只需要找到一个包含类“image”的div和其他可能的类,但它们并不重要。然后我只想从字符串中删除整个div。我怎么能用regex做到这一点?我不知道regex,尽管我试过很多次去学习它,所以我试图避免它。嘿,我试过了,但它似乎在服务器上不知怎么地不起作用。但基本上,我只需要找到一个包含类“image”的div和其他可能的类,但它们并不重要。然后我只想从字符串中删除整个div。我怎么能用正则表达式做到这一点呢?我不知道正则表达式,尽管我试过很多次去学习它,所以我试图避免它。是的,这是我的解决方案。非常感谢。是的,这是我的解决方案。非常感谢。
$my_html=preg_replace('%(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>%m', '', $my_html);