我想在将其编码为JSON之前从字符串中删除LEFT-TO-RIGHT-MARK(\ u200e)和RIGHT-TO-LEFT-MARK(\ u200f).以下两种情况似乎都不起作用:
$s = mb_ereg_replace("\u200e", '', $s);
$s = preg_replace("#\u200e#u", '', $s);
$s = preg_replace("#\u200e#", '', $s);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
在与这个问题摔跤了几天之后,我终于找到了答案!
$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str);
Run Code Online (Sandbox Code Playgroud)
您的Unicode转义是错误的,这应该工作:
preg_replace('/\x20(\x0e|\x0f)/', '', $string)
Run Code Online (Sandbox Code Playgroud)
测试:
<?php
$string = chr(0x20) . chr(0x0e) . 'fo' . chr(0x20) . chr(0x0e) . 'o' . chr(0x20) . chr(0x0f);
echo $string . "\n";
echo preg_replace('/\x20(\x0e|\x0f)/', '', $string);
?>
Run Code Online (Sandbox Code Playgroud)
或者,使用str_replace():
str_replace(array("\x20\x0e", "\x20\x0f"), '', $string);
Run Code Online (Sandbox Code Playgroud)