0

ご存知のように、trim の 2 番目のパラメーター( l​​trim 、rtrimと同じ) を使用すると、 trimmedによって正確なシンボルを追加できます。

たとえば、私は文字列を持っています:

$myStr = '(!@STRING$)';

trimシンボルに使用すると、次の()!$ようになります。

$myStr = trim($myStr,'()!');
echo $myStr; // Output: @STRING$

次に、一部のシンボルを除くすべてのシンボルをトリムします。たとえば、次のようになります@$

$myStr = new_trim($myStr,'@$');
echo $myStr; // Output: @STRING$

針を配列に展開し、最初からシンボルが配列になるまで文字列をループすることができますが、それは良い解決策ではありません。

4

1 に答える 1

1

包含ではなく除外リストを作成するには、トリムではなく preg_replace を使用する必要があります。トリムは、削除したいシンボルの文字列のみを受け入れます

これはあなたの質問であなたが望むことをします.[]正規表現で意味を持つものをエスケープすることを忘れないで保持したい他のシンボルを追加するだけです.

preg_replace('/[^@\$\w]/', '', $input);

編集:文字列の前後からシンボルのみを削除するには

preg_replace('/^[^\$@]+|[^\$@]+$/', '', $input);

保持するシンボルの変数を渡すには、これを行うことができます

$symbols = '@$';

preg_replace('/^[^'.preg_quote($symbols).']+|[^'.preg_quote($symbols).']+$/', '', $input);
于 2013-04-30T09:12:34.677 に答える