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

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

于 2013-01-07T14:55:33.573 回答
0

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

您可以像这样使用简单的正则表达式:

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