2013-08-22 2 views
0

Я пытаюсь разобрать строку, разбить его на то, что это не буква или номерОбработка датские специальные символы

$parse_query_arguments = preg_split("/[^a-z0-9]+/i", 'København'); 

и построить запрос MySQL. Даже если я пропущу preg_split и попытаюсь ввести строку непосредственно, он разбивает ее на две разные строки: «K» и «benhavn».

Как я могу справиться с этими проблемами?

+0

Как это «ломается»? – RandomSeed

+0

Используйте другой набор символов ... как 'utf-8' ... [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way- через) – naththedeveloper

ответ

1

Это может помочь объяснить, что происходит в вашем регулярном выражении ... Regex and Unicode.

Вы могли бы попробовать что-то вроде \p{L}, как описано в этом question

+0

Я немного потерял здесь, как я должен использовать это? В замене funcion? –

2

Если вы используете буквенные символы, такие как a-z тогда он не будет соответствовать акцентированные из них. Вы можете использовать различные character classes доступны, чтобы сделать более общие соответствия:

/[[:alpha:][:digit]]/ 

[:alpha:] набор находится в области гораздо шире, чем a-z. Помните, что совпадение символов выполняется на основе символьного кода, а a-z для того, чтобы буквами, между символами a и z указателем. Такие символы, как ø, находятся вне этого диапазона, даже если они попадут между ними в алфавитном порядке.

Компьютеры работают в ASCII-abetic (UNICODEical?) Порядке.

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