4

多分初心者の質問:

次のような文字列があります。

$string = '<p>this is what we need.</p><p>&nbsp</p>';

<p>&nbsp</p>PHP 正規表現 (substr ではない) を使用して、最後の文字を削除するにはどうすればよいですか?

ここで同様の質問を見つけました:解決策を使用して文字列の末尾から <br> を削除 します:preg_replace('/(<br>)+$/', '', $string);

しかし、これを : に変更してpreg_replace('/(<p>&nbsp;</p>)+$/', '', $string); も機能しません。

投げるPHP Warning: preg_replace(): Unknown modifier 'p'

私はいくつかのエスケープを逃していると思いますか?<> またはスラッシュの?

ご協力いただきありがとうございます。

4

5 に答える 5

0

HTML コンテンツ (または URL) に進むときにスラッシュを処理する良い方法は、スラッシュ以外の区切り文字を使用することです。次に例を示します。

$result = preg_replace('~(?><p>&nbsp;</p>)+$~', '', $string);

その場合、スラッシュをエスケープする必要はありません。

役に立たないものはすべて削除できることに注意してください。

$result = preg_replace('~
 (?>
    <(\w++)[^>]*+>(?>\s++|&nbsp;|<br\s*+/?>)*</\1>  # empty tags
   |                                                # OR
    (?>\s++|&nbsp;|<br\s*+/?>)+                     # white spaces, br, &nbsp;
 )+$
                        ~xi', '', $string);
于 2013-05-29T11:09:38.503 に答える
0

これでうまくいくはずです:

$string = '<p>this is what we need.</p><p>&nbsp</p>';
$pattern = "/<p[^>]*>[\s|&nbsp;]*<\/p>/"; 
$string = preg_replace($pattern, '', $string);

<p>これは、含むものだけでなく、空のすべてを置き換えます&nbsp;

于 2013-05-29T09:48:57.897 に答える