Должен ли я всегда кодировать свои данные в utf-8 перед использованием preg_match в php 5.4?

Я пытаюсь использовать preg_match() для моих данных, которые закодированы в ISO-8859-1. Если я пытаюсь сопоставить строку, в которой нет символов UTF-8, preg_match() выдаст мне пустой массив совпадений.

Рассмотрим следующий код:

setlocale(LC_ALL, 'en_US.iso-8859-1');
mb_internal_encoding("iso-8859-1");

// this returns an empty $matches array
$str = "Prices starting at " . chr(0x80);
preg_match('/^\s*+(?:\S++\s*+){1,3}/u', $str, $matches);

// this returns a filled matches array
$str = "Prices starting at $";
preg_match('/^\s*+(?:\S++\s*+){1,3}/u', $str, $matches);

В этом случае chr(0x80) - это знак евро. До обновления до php 5.4 это работало нормально, но с php 5.4 больше нет.

Есть ли способ заставить php 5.4 preg_match() понимать мои данные ISO-8859-1?

0 ответов

Другие вопросы по тегам