2015-02-06 4 views
0

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

蘋果,香蕉,橙。 
榴蓮, 啤梨 
鳳爪,排骨,雞排 
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); 

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

онлайн-exampls: https://www.regex101.com/r/qR8aA6/1

EDIT: мой ожидаемый выход (для первого укуса):

во-первых, он должен быть заменен в

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

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

Array 
    (
    [0] => 蘋果 
    [1] => 香蕉 
    [2] => 橙 
    ) 
+0

Каков ваш ожидаемый результат? Вы хотите заменить '\ n' на' -'? –

+0

Какая у вас конечная цель? почему вам нужно заменить персонажей? – Alex

+0

вместо замены на '-', вы можете напрямую разбить вход в соответствии с' [^ \ p {L} \ p {N} \ n] + 'regex. –

ответ

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)? – user3571945

+0

@ user3571945 вы можете задать это как новый вопрос ... –

+0

'\ B, \ B' не будет соответствовать запятым, которые находятся между буквенно-цифровыми символами. https://regex101.com/r/eG7cI3/1 –

Смежные вопросы