0

 $Content = preg_replace($regex, $replace, $Content);

我如何在变量中设置 preg_replace 操作之前和之后的 $content 之间的差异?

编辑

在我的情况下 $content 是我认为的字符串,看起来像这样

    <span style="color: #888888;"><img class="wp-image-3164 alignleft" style="color: #333333; margin: 5px;" alt="Modif 2" src="http://blablabla" width="200" height="132" />Rejoignez-nous en<strong> Egypte</strong> et découvrez une des mers les plus chaudes au monde, avec une <strong>visibilité remarquable</strong> et une grande variété d'espèces aquatiques endémiques. Safaga (port Egyptien) ouvert sur la Mer Rouge, situé à 45 minutes de l’aéroport d’Hurghada, est réputé pour son atmosphère non polluée, ses dunes de sable noir et sa <strong>tranquillité</strong>.</span>

正则表达式从中删除一些图像

4

3 回答 3

1

您可能可以使用:xdiff_string_diff函数:

$repl = preg_replace($regex, $replace, $Content);
$diff = xdiff_string_diff($Content, $repl);
于 2013-09-26T10:37:30.807 回答
1

您可以preg_match_all在 preg_replace 之前使用。像这样的东西:

preg_match_all($regex,$Content,$matches);
$Content = preg_replace($regex, $replace, $Content);
$diff = $matches;

$matches 是数组。

于 2013-09-26T11:05:22.460 回答
1

preg_replace_callback允许您在 preg_replace 第二个参数中使用函数。在该函数中,您现在可以处理找到的匹配项。

$removed_imgs = array();
$content = '<span style="color: #888888;"><img class="wp-image-3164 alignleft" style="color: #333333; margin: 5px;" alt="Modif 2" src="http://blablabla" width="200" height="132" />Rejoignez-nous en<strong> Egypte</strong> et découvrez une des mers les plus chaudes au monde, avec une <strong>visibilité remarquable</strong> et une grande variété d\'espèces aquatiques endémiques. Safaga (port Egyptien) ouvert sur la Mer Rouge, situé à 45 minutes de l’aéroport d’Hurghada, est réputé pour son atmosphère non polluée, ses dunes de sable noir et sa <strong>tranquillité</strong>.</span>';
$content = preg_replace_callback('#(<img.+? />)#',function($r) {
    global $removed_imgs;
    $removed_imgs[] = $r[1];
    return '';
},$content);
//Can now loop through all $removed_imgs

提供的正则表达式的所有匹配项将从原始字符串中删除,但也会添加到$removed_imgs数组中。

于 2013-09-26T11:16:47.300 回答