Ответ 1
Я нашел более полезным определить, выпадет ли какой-либо символ из списка
if(preg_match('/[^\x20-\x7f]/', $string))
Если у меня есть строка PHP, как я могу определить, содержит ли она хотя бы один символ, отличный от ASCII, или нет, эффективным способом? И с помощью символа, отличного от ASCII, я имею в виду любой символ, который не является частью этой таблицы, http://www.asciitable.com/, позиции 32 - 126 включительно.
Таким образом, он не только должен быть частью таблицы ASCII, но также должен быть доступен для печати. Я хочу обнаружить строку, содержащую хотя бы один символ, который не соответствует этим спецификациям (либо непечатаемый ASCII, либо совсем другой символ, такой как символ Unicode, который не является частью этой таблицы.
Я нашел более полезным определить, выпадет ли какой-либо символ из списка
if(preg_match('/[^\x20-\x7f]/', $string))
Вы можете использовать mb_detect_encoding
и проверить наличие ASCII:
mb_detect_encoding($str, 'ASCII', true)
Это вернет false, если $str
содержит хотя бы один символ не ASCI (значение байтa > 0x7F).
Функция ctype_print возвращает true, если все символы попадают в диапазон ASCII 32-126 (PHP unit test).
Вы можете использовать:
но это может быть не так точно, как вы хотите.
Попробуйте (mb_detect_encoding)
Попробуйте: (Источник)
function is_ascii( $string = '' ) {
return ( bool ) ! preg_match( '/[\\x80-\\xff]+/' , $string );
}
Хотя, все приведенные выше ответы верны, но в зависимости от ввода эти решения могут давать неправильные ответы. См. Последний раздел в этот пост проверки ASCII.
Если вы не хотите иметь дело с Regex
в javascript, вы можете сделать
detectUf8 : function(s) {
var utf8=s.split('').filter(function(C) {
return C.charCodeAt(0)>127;
})
return (utf8.join('').length>0);
},
Я предлагаю вам ознакомиться с utf8_encode или utf8_decode в руководстве PHP:
http://www.php.net/manual/en/function.utf8-encode.php
Посмотрите на приведенные ниже примеры, поскольку у него может быть что-то, что приведет вас в правильное направление, если вы не найдете то, что ищете.