2012-03-19 111 views
1

我有一个函数接收帖子标题,并在帖子标题长度超过40个字符时剪切它。除非字符串中有',函数运行良好。如何用另一个特殊字符替换'使用str_replace php

这是浏览器如何显示在原始页面的标题(之前的“切割”)

dall'high-tech all'high-car, bla bla bla bla bla bla bla bla bla bla bla 

当字符串被传递给函数和函数削减它在40个字符返回的字符串是很短:

dall'high-tech 

我使用substr() 40个字符后削减它:

substr($my_string, 0, 40); 

我认为问题与'字符串中的字符有关。我曾尝试使用

str_replace("'", chr(134), $my_string); 

chr(134)更换'字符,但str_replace()失败更换'。 (我也尝试使用\'chr(39)而不是',并且还使用B而不是chr(134))。

所以,现在我不知道该怎么做。我已经花了5个小时试图解决这个问题。我相信以前有人经历过,可能会帮助我。

谢谢

+0

请检查:http://codepad.org/EU4e1q89 – hjpotter92 2012-03-19 09:39:34

+1

这些Unicode字符?你确定'''实际上是'''而不是任何其他类似的Unicode字符吗? – 2012-03-19 09:40:50

回答

2

尝试这样做,你做SUBSTR()之前:

$my_string = html_entity_decode($my_string, ENT_QUOTES); 

另一个选择尝试基于数使用mb_substr()执行多字节安全SUBSTR()操作字符。

+0

它与substr有什么关系? – 2012-03-19 09:39:25

+0

对于一些人(正如我在Google上发现的一样),这是一个解决方案。这可能与他们的字符集有关。老实说,我无法重现与PHP 5.2.11的行为 - > http://ideone.com/qixOP – 2012-03-19 09:44:35

+1

@Shiplu OP试图使用substr,但它可能确实失败的多字节字符串,让你在字符串的末尾只有一个多字节字符的字节。 – GolezTrol 2012-03-19 09:45:40