我的文字中有一个奇怪的短划线,在str_replace
中没有检测到。
以下是一个例子:
Sun: 10:00 – 3:00pm
我不知道破折号是否会显示在这里..但是当它插入我的表格时,它就像一个带有0096
它看起来很像–
- 在查看来源时,没有特殊字符,只有短划线。
str_replace('–', '', $var);
以上替换似乎没有抓住它,有没有其他人在此之前遇到过这个问题?
答案 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');
。