0

如您所知,使用trim的第二个参数(与ltrimrtrim相同),您可以通过 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 而不是 trim。trim 只接受要删除的符号字符串

这会在你的问题中做你想要的,你只需要添加你想保留在[]记住的其他符号,以逃避任何在正则表达式中有意义的符号

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

编辑:仅从字符串的正面和背面删除您的符号

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

要传递符号变量以保留您可以这样做

$symbols = '@$';

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