php trim功能修剪额外的Less-than / Greater-than标志

时间:2013-01-07 14:52:49

标签: php

我对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

我不是在寻找其他方法。
我想知道为什么trim函数会显示这种行为(剥离额外的Less-than / Greater-than符号)。

提前致谢。

2 个答案:

答案 0 :(得分:2)

trim将第二个参数视为可以删除的字符列表,而不是连续字符串。这解释了为什么b仍然存在,但<>已被删除。

答案 1 :(得分:0)

这是trim函数的默认行为。你希望它修剪精确的字符串,但第二个参数是一个字符列表,如果在字符串的每一边找到它们,它们中的任何一个都将被修剪。

你可以像这样使用简单的RegEx:

$x = preg_replace(array('#^<p>#i', '#</p>$#i'), '', $x);