0

これはコンテンツの例です (スペイン語)

Definición<br /> Elementos del fuego<br /> Clases de fuego, ¿Cómo evitar que comiencen las clases de fuego?<br /> Métodos de extinción<br /> Tipos de extintores portátiles<br /> Forma de usar los extintores portátiles<br /> Protección pasiva para el control de incendios, tipos de componentes.<br /> Procedimientos preventivos en caso de incendios en minería<br />

<br />php を使用して最後の出現を削除したいpreg_replace()

私は試してみました

preg_replace('/<br \/>$/', '<br class="last" />', $content);

しかし中華鍋ではありません。コンパイラはエラーを返します。

どうすればいいですか?

4

2 に答える 2

5

(?!...)次のような否定的な先読みで正規表現パターンを使用します

<br \/>(?!.*<br \/>)
于 2012-10-15T19:55:25.897 に答える
1

先読みで正規表現を使用する場合は、次の点に注意してください。

$text = "foo bar <br /> \nbaz <br /> <br /> mu";

echo preg_replace('/<br \/>(?!.*<br \/>)/', '<br class="last" />', $text) . "\n";

(ドット)メタ文字が改行と一致しないため、 2つ<br />が置き換えられます。.したがって、上記は次のように出力されます。

foo bar <br class="last" /> 
baz <br /> <br class="last" /> mu

「<BR>」または「<br/>」(複数のスペース)も考慮に入れることをお勧めします。

echo preg_replace('#<br\s*/?>(?!.*<br\s*/?>)#is', '<br class="last" />', $text) . "\n";

(これiにより、パターンで大文字と小文字が区別されなくなり、改行文字も一致するようになりsます).

印刷されます:

foo bar <br /> 
baz <br /> <br class="last" /> mu

が常にのように見えると確信している場合は<br />、いくつかのstr-operationsもトリックを実行します。

$text = "foo bar <br /> \nbaz <br /> <br /> mu";
$needle = "<br />";
$index = strrpos($text, $needle);

if($index) {
  echo substr_replace($text, '<br class="last" />', $index, strlen($needle)) . "\n";
}
于 2012-10-15T20:40:01.867 に答える