Это не будет проблемой, если два варианта: «UTF-8» или «ASCII», но это не так.
Если PHP не использует UTF-8, он использует ISO-8859-1, который НЕ является ASCII (это расширенный набор ASCII, в котором первые 127 символов. Это расширенный набор ASCII. Некоторые символы, например шведские å
, ä
и ö
, могут быть представлены вИ ISO-8859-1, и Unicode, с разными кодовыми точками! Я не думаю, что это имеет большое значение для функций preg_ *, поэтому это может быть неприменимо к вашему вопросу, но имейте это в виду при работе с различными кодировками.
Вы должны действительно, действительно пытаться узнать, в каком наборе символов находятся ваши строки, без магии mb_detect_encoding (mb_detect_encoding не является гарантией, просто хорошая догадка). Например, строки, извлеченные через HTTP, имеют набор символовуказано в заголовке HTTP.