我正在尝试从字符串中删除LEFT-TO-RIGHT-MARK(\ u200e)和RIGHT-TO-LEFT-MARK(\ u200f),然后将其编码为JSON。以下两种情况似乎都不起作用:
$s = mb_ereg_replace("\u200e", '', $s);
$s = preg_replace("#\u200e#u", '', $s);
$s = preg_replace("#\u200e#", '', $s);
感谢任何帮助!
答案 0 :(得分:7)
在与这个问题搏斗了几天之后,我终于找到了答案!
$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str);
答案 1 :(得分:5)
您的Unicode转义是错误的,这应该有效:
preg_replace('/\x20(\x0e|\x0f)/', '', $string)
测试:
<?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);
?>
或者,使用str_replace()
:
str_replace(array("\x20\x0e", "\x20\x0f"), '', $string);
答案 2 :(得分:0)
您是否尝试过以UTF-8编码脚本文件,并在那里输入(或复制+粘贴)字符?
答案 3 :(得分:0)
如何使用str_replace
,并使用它的字符代码对该字符进行编码;像这样的东西,也许:
$new_string = str_replace("\x20\x0f", "", $your_string);
而且,在您的情况下,由于您要替换几个不同的字符,您可以在一次调用str_replace
中将它们全部替换掉:
$new_string = str_replace(
array(
"\x20\x0e",
"\x20\x0f",
),
array(
"",
"",
),
$your_string
);
它对您的问题有用吗?
答案 4 :(得分:0)
$s=preg_replace('/\xe2\x80[\x8e\x8f]/', '', $s)
或使用str_replace
$s=str_replace("\xe2\x80\x8e", "", $s);
$s=str_replace("\xe2\x80\x8f", "", $s);
答案 5 :(得分:0)
试试这个
preg_replace('/\x{E2}\x{80}\x{8E}/', '', $s);
// strip unicode chars (LEFT_TO_RIGHT_MARK)