Вопрос регулярного выражения PHP: как сопоставить буквы без ascii в кодировке latin1_swedish_ci? - PullRequest
1 голос
/ 07 апреля 2010

У меня есть эта строка: Verbesserungsvorschläge, я думаю, на немецком языке. Теперь я хочу сопоставить его с регулярным выражением в php. Чтобы быть более общим, я хочу сопоставить такие символы, как немецкий, которые не являются 100% в наборе ASCII.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 08 апреля 2010

Если вы работаете с 8-битным набором символов, регулярное выражение [\x80-\xFF] соответствует любому символу, который не является ASCII. В PHP это будет:

if (preg_match('/[\x80-\xFF]/', $subject)) {
  # String has non-ASCII characters
} else {
  # String is pure ASCII or empty
}
1 голос
/ 07 апреля 2010
preg_match_all('~[^\x00-\x7F]~u', 'Verbesserungsvorschläge', $matches);
0 голосов
/ 19 ноября 2012

Вот официальное описание для персонажей http://www.unicode.org/charts/PDF/U0080.pdf Где вы можете сопоставить символы ASCII

0 голосов
/ 07 апреля 2010

Это мир боли, но вы можете попробовать использовать шестнадцатеричное значение, как в "/ Verbesserungsvorschl \ xc3ge /" для простых расширенных символов.

Шестнадцатеричные значения можно найти в таблице для определения на лету с помощью

echo dechex( ord( ä ) ); 

Для полного юникода вы можете использовать / u в качестве модификатора. См. http://www.php.net/manual/en/regexp.reference.unicode.php и другие страницы. Насколько я понимаю, Unicode будет работать лучше в PHP версии 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...