PHP中的奇怪短划线字符

时间:2012-01-27 00:23:36

标签: php

我的文字中有一个奇怪的短划线,在str_replace中没有检测到。

以下是一个例子:

Sun: 10:00 – 3:00pm

我不知道破折号是否会显示在这里..但是当它插入我的表格时,它就像一个带有0096

字符的方框

它看起来很像– - 在查看来源时,没有特殊字符,只有短划线。

str_replace('–', '', $var);

以上替换似乎没有抓住它,有没有其他人在此之前遇到过这个问题?

4 个答案:

答案 0 :(得分:12)

那是en dash。在PHP中,获得它的最便携方式是使用html_entity_decode

$endash = html_entity_decode('–', ENT_COMPAT, 'UTF-8');
echo str_replace($endash, '(en dash)', 'Sun: 10:00 – 3:00pm');

请注意,这仅适用于您的网站编码为UTF-8 您的编辑器编码(或第str_replace的第三个参数的编码)。如果您使用其他编码(并且您应该对网站和编辑器使用相同的编码),请将html_entity_decode的第三个参数替换为其名称。

答案 1 :(得分:1)

http://php.net/manual/en/function.str-replace.php#102465 杰伊建议

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

答案 2 :(得分:1)

另一方面,如果其他答案对您不起作用,就像我的情况一样,这对我有用。

$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);

答案 3 :(得分:0)

-短跑我们习惯了看见 Em Dash,我们应该在大多数情况下使用“ - ” 基本上,这是一个语法问题。

阅读维基百科:http://en.wikipedia.org/wiki/Dash

在Mac上(使用美国键盘布局)我得到它击中Alt + - ,就像你得到_用shift + _

你不需要任何特殊的处理,因为它是一些中国符号。这是一个有效的角色。这样对待:str_replace('–', 'em dash');