Как я могу извлечь или preg_replace китайские символы в строке?

0

В настоящее время у меня есть список строк, подобных этому

蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人

То, что я хочу сделать, это просто взорвать все китайские и буквенно-цифровые символы из этих строк. Как я могу заменить все специальные символы, такие как , / " И пробелы с - или _

затем извлечь весь китайский символ с помощью explode() как $str = explode("-",$str); или $str = explode("_",$str); ?

У меня в настоящее время есть RegEx, как это

 if(/^\S[\u0391-\uFFE5 \w]+\S$/.test(value)).....

И я модифицировал его в

 $str = preg_replace("/^\S[\x{0391}-\x{FFE5} \w]+\s+\S$/u", "-", $str);

но кажется, что это не сработало...

онлайн-экзамены: https://www.regex101.com/r/qR8aA6/1

EDIT: мой ожидаемый результат (для первого жало):

во-первых, его следует заменить на

蘋果-香蕉-橙- или 蘋果_香蕉_橙_

то я могу использовать $str = explode("-",$str); чтобы они окончательно стали:

Array
    (
     [0] => 蘋果
     [1] => 香蕉
     [2] => 橙
     )
  • 0
    Каков ваш ожидаемый результат? Вы хотите заменить \n на - ?
  • 0
    какова ваша конечная цель? почему нужно заменить персонажей?
Показать ещё 1 комментарий
Теги:
preg-replace

1 ответ

0
Лучший ответ

Похоже, вы хотите что-то вроде этого,

$txt = <<<EOT
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
EOT;
echo preg_replace('~[^\p{L}\p{N}\n]+~u', '-', $txt);

Вывод:

蘋果-香蕉-橙-
榴蓮-啤梨
鳳爪-排骨-雞排
24個男-2個女-30個老人

DEMO

Объяснение:

  • \p{L} Соответствует любому письму с любого языка.
  • \p{N} соответствует любому типу символов в любом скрипте.
  • \n Соответствует символу новой строки.
  • Помещая все внутри отрицаемого символьного класса, выполняется противоположная операция.
  • 0
    Большое спасибо за ваш ответ. Но еще одна вещь, это можно не заменять только для / и , между алфавитно - цифровых символов (например, G, F, A, B, 9000)?
  • 0
    @ user3571945 Вы можете задать это как новый вопрос ...
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню