str_replace无法处理奇怪的字符

时间:2019-06-23 11:31:19

标签: php str-replace

我使用"Holder – 2pcs"函数从我的Wordpress帖子标题中获得了这个字符串get_the_title(),然后我使用str_replace替换了“ –”字符,但没有运气!

str_replace("–","-","Holder – 2pcs");

任何帮助表示赞赏!

编辑:

(回复评论)

我不得不将文本从$title1=get_the_title();保存到.txt文件,我注意到–在txt文件中另存为– ...然后我替换了str_replace("–","-","Holder – 2pcs")而且有效!问题是,在我的wordpress数据库中,标题包含应有的-char,但是当我在代码中使用wordpress的get_the_title();函数检索标题时,得到的-char为–最终为{{1} }我不知道为什么–导致此问题!

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您共享的does work代码:

var_dump(str_replace("–","-","Holder – 2pcs"));
  

string(13) "Holder - 2pcs"

否则,您实际上正在运行其他操作。输入数据很可能包含空格或HTML实体,并且正在通过浏览器眼镜查看。

尝试进一步检查您的输入数据,例如:

header('Content-Type', 'text/plain');
var_dump("Holder – 2pcs", bin2hex("Holder – 2pcs"));
string(15) "Holder – 2pcs"
string(30) "486f6c64657220e280932032706373"

答案 1 :(得分:0)

您的问题是由于您的“-”字符是其他与看起来相同的字符引起的。

步骤1:

确保从MySQL到PHP到输入文本,所有内容均为using the same Character set

$n

reference

步骤2:

确保您转换的是原始字符串,而不是HTML编码的输出

$title1 = iconv(mb_detect_encoding(get_the_title(), mb_detect_order(), true), "UTF-8", get_the_title());

步骤3:

按照最初的尝试运行$title2 = html_entity_decode($title1, ENT_NOQUOTES | ENT_HTML5, "UTF-8"); 函数。如果存在一系列可能的“破折号”字符,则可以构建一个数组:

str_replace()

reference