我对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符号)。
提前致谢。
答案 0 :(得分:2)
trim
将第二个参数视为可以删除的字符列表,而不是连续字符串。这解释了为什么b
仍然存在,但<
和>
已被删除。
答案 1 :(得分:0)
这是trim
函数的默认行为。你希望它修剪精确的字符串,但第二个参数是一个字符列表,如果在字符串的每一边找到它们,它们中的任何一个都将被修剪。
你可以像这样使用简单的RegEx:
$x = preg_replace(array('#^<p>#i', '#</p>$#i'), '', $x);