Должен ли я всегда кодировать свои данные в 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?