0

PHPのトリム機能について質問です。次の点を考慮してください。

$x= '<p>blah</p>';  
$x= trim(trim($x, '<p>'), '</p>');
echo htmlentities($x) . "<br />"; 

This works as expected and prints blah

.

$x= '<p><b>blah</b></p>';   
$x= trim(trim($x, '<p>'), '</p>');
echo htmlentities($x) . "<br />"; 

This prints b>blah</b

私はこれを回避する他の方法を探していません。
トリム関数がこの動作を示すのはなぜでしょうか (余分な小なり/大なり記号を取り除きます)。

前もって感謝します。

4

2 に答える 2

2

trim2 番目の引数を、連続した文字列としてではなく、削除できる文字のリストとして扱います。これは、なぜb残っているのかを説明していますが、<>は削除されています。

于 2013-01-07T14:55:33.573 に答える
0

これはtrim関数のデフォルトの動作です。正確な文字列をトリミングすることを期待していますが、2 番目のパラメーターは代わりに文字のリストであり、文字列の両側にある場合はそれらのいずれかがトリミングされます。

次のような単純な正規表現を使用できます。

$x = preg_replace(array('#^<p>#i', '#</p>$#i'), '', $x);
于 2013-01-07T14:57:23.150 に答える