замена нескольких символов utf-8 в php

У меня есть строка с несколькими символами utf-8, которая выглядит так

\u00b4, \u2019, \u201b, \u2032

Я хочу заменить их следующим символом html

'

Я использую следующий php-код для замены этих

$search  = "(\\u00b4|\\u2019|\\u201b|\\u2032)"; 
$replace = "'";

$result = preg_replace($search, $replace, $string);

Я продолжаю получать следующее предупреждение, а $result равен нулю

Warning:  preg_replace(): Compilation failed: PCRE does not support \\L, \\l, \\N, \\U, or \\u at offset 2 in /...

Я понятия не имею, что делать. Любые идеи о том, как продолжить замену этих символов utf8, приветствуются!


person Onema    schedule 14.12.2011    source источник


Ответы (2)


При выполнении сопоставления preg для определенных кодов символов вам нужно использовать шестнадцатеричное представление \x, а не обозначение юникода - они выглядят как значения юникода.

$search  = "(\xb4|\x2019|\x201b|\x2032)"; 
person Rylab    schedule 14.12.2011
comment
строка, которая у меня есть, была json_encoded, по какой-то причине код utf8 является фактической строкой ’... Мне действительно нужно сопоставить эту точную строку... - person Onema; 14.12.2011

$unicode = "\u00b4 \u2019 \u201b \u2032";
$unicode = preg_replace('/\\\\u[^ ]+/im', "'\r\n", $unicode);
echo $unicode;

Вы неправильно экранировали обратную косую черту, вам нужны 2 дополнительные обратные косые черты:

\\\\
person Pedro Lobito    schedule 03.09.2012