如何从php中的字符串中删除unicode字符(LEFT_TO_RIGHT_MARK)

Mar*_*arc 9 php regex utf-8

我想在将其编码为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)

任何帮助表示赞赏!

Tim*_*eld 7

在与这个问题摔跤了几天之后,我终于找到了答案!

$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str);
Run Code Online (Sandbox Code Playgroud)


tmo*_*ont 6

您的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)


Pek*_*ica 0

您是否尝试过使用 UTF-8 对脚本文件进行编码,并实际在其中键入(或复制+粘贴)字符?