我想从字符串中删除ZERO WIDTH NON-JOINER字符,但使用str_replace
没有用。
问问题
3410 次
2 回答
5
str_replace 应该可以解决这个问题,只要你小心你要替换的东西。
// \xE2\x80\x8C is ZERO WIDTH NON-JOINER
$foo = "foo\xE2\x80\x8Cbar";
print($foo . " - " . strlen($foo) . "\n");
$foo = str_replace("\xE2\x80\x8C", "", $foo);
print($foo . " - " . strlen($foo) . "\n");
预期的输出:
foobar - 9
foobar - 6
于 2012-11-20T20:46:21.577 回答
0
str_replace 会做你想做的事,但是 PHP 对 Unicode 没有很好的原生支持。以下将按照您的要求进行。json_decode 已用于获取 Unicode 字符,因为 PHP 不支持 \u 语法。
<?php
$unicodeChar = json_decode('"\u200c"');
$string = 'blah'.$unicodeChar.'blah';
echo str_replace($unicodeChar, '', $string);
?>
编辑:虽然我的方法有效,但我建议您使用 fiskfisk 的解决方案。它比使用 json_decode 更简单。
于 2012-11-20T20:51:31.027 回答