Как удалить символы Юникода (LEFT_TO_RIGHT_MARK) из строки в php - PullRequest
9 голосов
/ 18 декабря 2009

Я пытаюсь удалить 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);

Любая помощь приветствуется!

Ответы [ 6 ]

7 голосов
/ 10 сентября 2013

После нескольких дней борьбы с этим вопросом я наконец нашел ответ!

$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str);
5 голосов
/ 05 января 2010

Ваш код 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);
0 голосов
/ 04 октября 2012

попробуйте

preg_replace('/\x{E2}\x{80}\x{8E}/', '', $s); 
// strip unicode chars (LEFT_TO_RIGHT_MARK) 
0 голосов
/ 05 января 2010

Не могли бы вы попробовать это? его utf8 кодировка 200e и 200f

$s=preg_replace('/\xe2\x80[\x8e\x8f]/', '', $s)

или с str_replace

$s=str_replace("\xe2\x80\x8e", "", $s);
$s=str_replace("\xe2\x80\x8f", "", $s);
0 голосов
/ 18 декабря 2009

Как насчет использования str_replace и кодирования этого символа с использованием его кодов символов; как то так, может быть:

$new_string = str_replace("\x20\x0f", "", $your_string);

И, в вашем случае, поскольку у вас есть несколько различных символов для замены, вы можете заменить их всех за один вызов str_replace:

$new_string = str_replace(
    array(
        "\x20\x0e", 
        "\x20\x0f", 
    ),
    array(
        "", 
        "", 
    ),
    $your_string
);

Работает ли это на вашу проблему?

0 голосов
/ 18 декабря 2009

Вы пытались кодировать файл сценария в UTF-8 и вводить (или копировать + вставлять) символы там?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...