PHP中的奇怪短划线字符
问题描述:
我在文本中有一个奇怪的短划线,这在str_replace
中未被检测到。PHP中的奇怪短划线字符
下面是一个例子:
Sun: 10:00 – 3:00pm
我不知道,如果仪表板会显示在这里..但是当它插入我的表,这就像与一个方盒子字符0096
它看起来很像–
- 查看源代码时,没有特殊字符,只有短划线。
str_replace('–', '', $var);
上面的替换似乎没有抓住它,有没有其他人有过这种麻烦?
答
这是一个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的第三个参数替换为其名称。
答
恩-
短跑我们看惯了
EM –
短跑是我们应该用大部分的时间,其中使用“ - ”。
基本上,这是一个语法的东西。
在*上阅读起来:http://en.wikipedia.org/wiki/Dash
在Mac(美国键盘布局),我把它按下Alt + - ,你一样得到_用SHIFT + _
你不需要任何特殊处理,因为它是一些中国的象征。这是一个有效的角色。像这样对待它:str_replace('–', 'em dash');
。
答
http://php.net/manual/en/function.str-replace.php#102465 周杰伦建议
$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);
你应该给我们[base64_encode](http://www.php.net/base64_encode)格式的字符串,以便它保存的二进制安全。这使我们能够识别角色。 – goat 2012-01-27 00:32:19
只是问明显,但你保存str_replace的返回值?即'$ var = str_replace(' - ','',$ var);'str_replace不直接对字符串进行操作。 – tangrs 2012-01-27 00:32:43
你的桌子使用什么字符集? – 2012-01-27 00:37:39