Прием только писем UTF8 с preg_match - PullRequest
4 голосов
/ 22 марта 2012

Я пытаюсь разрешить китайское, японское (хирагана, катакана, кандзи), корейское и в основном любое письмо в юникоде. Я бы хотел, чтобы первым символом была буква

$pattern = '/\p{L}[\p{L}\p{N} _.-]+/u';
if(!preg_match($pattern, $subuser)){
    //Error
}

Однако мой шаблон, кажется, принимает строки с числами спереди. Когда я добавил:

'/^\p{L}[\p{L}\p{N} _.-]+$/u'

Строки не были приняты. Я пытался использовать \ p {Hiragana} и т. Д., Но безуспешно. Кто-то видит, что я делаю неправильно?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Это должно сработать:

<?php

$lines = array('12345', 'w123', 'hello');

$valid = array_filter($lines, function($line){
  return preg_match('/^\p{L}{1,}/iu', $line);
});

var_dump($valid);
1 голос
/ 23 марта 2012

Святой Грааль, когда дело касается санитарии: http://htmlpurifier.org/ Он очищает все данные и пропускает только символы utf-8.Некоторые рекомендованные к прочтению символы: http://htmlpurifier.org/docs/enduser-utf8.html

...