我为php调用相同的文本,但结果是chracter问题。 e.g;
PROFILE
并运行函数
"<div class="open"><?php echo ex_substr(180); ?></div>"
在文本内容的最后,有一些字符问题,例如:�
我对php非常新。
答案 0 :(得分:0)
虽然我绝不是编码方面的专家(典型的我只是删除那个垃圾)这是我用它来处理它们
preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
这是一个可以试用的PHP沙箱。
http://sandbox.onlinephpfunctions.com/code/695ad38ae46ef5a142102dd6150fd84279b1a058
$string ='this is a string �';
echo preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
输出
'this is a string '
如果最后的额外空间让你感到烦恼,你可以用trim($string)
来点击它。
另一个技巧是用空格替换它。然后删除任何多个空格。这样,如果它在单词之间,它不会只是将它们塞在一起。
$string ='this is a�string';
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', ' ', $string);
echo trim( preg_replace('/\s{2, }/', ' ', $string)); //replace 2 or more spaces with a single space.
即使DB字符集设置为UTF-8,我偶尔会在我的数据库中得到奇怪的东西。我们有很多内容从网上废弃,所以谁知道那是什么废话。
这是解决这个问题的一种“基本”方法,但是如果你不担心失去这些角色应该没问题。我应该更多地研究编码问题,因为我没有PHP6来修复所有这些问题。
(根据我的理解PS,PHP6应该对多字节字符串有更多的支持,但由于C的缺点,它们都崩溃了,这就是我们从PHP5到PHP7的原因)
希望有所帮助。
答案 1 :(得分:0)
$title= strip_tags(substr($title,0,$char));
而不是
$title= mb_substr($title,0,$char);
使用它时问题彻底解决了。