脚本宝典收集整理的这篇文章主要介绍了php – 无法使用str_replace删除特殊字符,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有En Dash字符的字符串( – ),如下所示:
I want to remove - the dash
I want to remove the – the dash
我想做这个:
$new_string = str_replace ('-','',$string);
我试图用html_entITy_decode解析字符串,解析字符以使用htmlsPEcialchars删除,但没有任何结果.
我做错了什么?
-编辑-
这是我的脚本的完整代码:
$title = 'Super Mario Galaxy 2 - Debut Trailer'; // Fetched From the DB,in the DB the character is - (minus) not – $new_title = str_replace(' - ',$title); $new_title = str_replace(" - ",$title); $new_title = str_replace(html_entity_decode('–'),$title);
没有人工作.
基本上问题是在DB中,破折号存储为“减号”(我用减号键输入值)但是由于一个奇怪的原因,输出是& ndash;
我在wordpress上运行,而charset是UTF-8,对于DB整理来说也是如此.
str_replace(html_entity_decode('–',ENT_COMPAT,'UTF-8'),$string);
我的猜测是它不是真正的ndash,而是一个非常相似的角色.我建议拉出字符串中每个字符的字节值,看看它是什么样的:
function decodeString($str) { //Fix for mb overloading strlen option if (function_exists('mb_strlen')) { $len = mb_strlen($str,'8bit'); } else { $len = strlen($str); } $ret = ''; for ($i = 0; $i < $len; $i++) { $ret .= dechex(ord($str[$i])).' '; } return trim($ret); }
那将把字符串转换成单独的字节编码(把它变成一个十六进制字符串,如48 65 6C 6C 6F(Hello).检查看两个情况下的短划线实际上是相同的字符.如果你看到“2D”在哪里短划线,这是一个字面减号……如果你看到三字节序列E2 80 93,那就是& ndash;.其他任何意味着不同的字符……
编辑:如果你看到26 6E 64 61 73 68 3B,那么你需要做str_replace(‘& ndash;’,”,$str);
以上是脚本宝典为你收集整理的php – 无法使用str_replace删除特殊字符全部内容,希望文章能够帮你解决php – 无法使用str_replace删除特殊字符所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。