PHP在使用strip_tags时截断字符串

时间:2012-07-02 13:32:56

标签: php escaping pyrocms strip-tags

我将它存储在我的MySQL InnoDB UTF8数据库中:

  

<p>长度为5英尺1英寸(155厘米),推出了这款“Baby”三角钢琴   在20世纪30年代,具有更大的强大和丰富的基调   钢琴。这款钢琴很小,几乎适合任何房间   使用相同的材​​料和技术手工制作   制作我们的音乐会三角钢琴。</p>

当我回显strip_tags($ string)时,PHP返回:

Introduced 5\'1\

就是这样。我发现了一个类似的报告错误here(受影响有斜杠,而不是单引号/双引号)但它已经解决了。我正在使用PHP 5.3.6。

知道如何解决这个问题而无需使用preg_replace

3 个答案:

答案 0 :(得分:0)

这是输入内容吗?因为引用会结束它。

尝试htmlentities(strip_tags($ string));

<input type="text" value="Introduced 5\'1\" (155......" />

答案 1 :(得分:0)

尝试以下方法:

<?php

$pattern = '/<.*?>/';
$string  = '<p>At 5\'1" (155cm) in length, this "Baby" grand piano was introduced in the 1930\'s and features the powerful and rich tone of a much larger piano. Small enough to fit nicely into almost any room, this piano is handcrafted using the same materials and techniques that go into making our concert grand pianos.</p>';
echo preg_replace($pattern, '', $string);

?>

答案 2 :(得分:0)

这是PyroCMS使用的Lex解析器的问题。修复可以在这里找到:

https://github.com/happyninjas/lex/commit/ff9aa30554fce47a8bfb6dc7c94143afc2fd8f93

我也承诺改变PyroCMS。希望它能在下一个版本中实现。