แทนที่อักขระ utf-8 หลายตัวใน php.ini

ฉันมีสตริงที่มีอักขระ 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