PHP中的奇怪破折号字符

PHP中的奇怪破折号字符,php,Php,我的文本中有一个奇怪的破折号,在str\u replace中没有检测到 以下是一个例子: Sun:10:00–下午3:00 我不知道这里是否会出现破折号。。但当它被插入到我的表中时,它就像一个带有字符0096 它看起来很像一个&ndash-查看源代码时,没有特殊字符,只有破折号 str_replace('–', '', $var); 上面的替换似乎没有抓住它,以前有没有其他人遇到过这种问题?这是一个问题。在php中,获取它的最方便的方法是: 请注意,只有当您的网站编码为UTF-8且编辑器编码(

我的文本中有一个奇怪的破折号,在
str\u replace
中没有检测到

以下是一个例子:

Sun:10:00–下午3:00

我不知道这里是否会出现破折号。。但当它被插入到我的表中时,它就像一个带有字符
0096

它看起来很像一个
&ndash-查看源代码时,没有特殊字符,只有破折号

str_replace('–', '', $var);
上面的替换似乎没有抓住它,以前有没有其他人遇到过这种问题?

这是一个问题。在php中,获取它的最方便的方法是:


请注意,只有当您的网站编码为UTF-8且编辑器编码(或
stru\u replace
的第三个参数的编码)也为UTF-8时,这才有效。如果您使用另一种编码(并且您应该对网站和编辑器使用相同的编码),请将html_entity_decode的第三个参数替换为其名称。

En
-
我们习惯于看到的破折号
Em
破折号,我们应该在使用“-”的地方大部分时间使用该破折号
基本上,这是一个语法问题

阅读维基百科:

在mac电脑上(使用US键盘布局),我会让它按Alt+-,就像你用shift键一样+_

你不需要对它进行任何特殊处理,因为它是一些中国符号。它是一个有效字符。将其视为:
str_replace('-','em dash')

杰伊建议

$str = str_replace(chr(150), '-–', $str);    // endash
$str = str_replace(chr(151), '--', $str);   // emdash

另一种选择是,如果其他答案对你不起作用,就像我的情况一样,这对我有效

$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title);

你应该给我们字符串的格式,以便其保留的二进制安全。这使我们能够识别字符。只需询问明显的问题,但您是否保存str_replace的返回值?即,
$var=str_替换('-','$var)str_replace不直接对字符串执行操作。表使用的是什么字符集?
$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title);