string — обнаружение специальных символов в переполнении стека

Как я могу обнаружить специальные символы в PHP. У меня ошибка при попытке сохранить строку в базе данных:

1366 Неверное строковое значение mysql

У меня есть неизвестные строки из некоторого API, и я не знаю, что я могу подозревать из этого API. Например, этот API возвращает мне такой символ:

��

Поэтому я хочу обнаружить это, прежде чем пытаться вставить эту строку в базу данных. Как я могу обнаружить этот тип строки? Я не хочу менять базу данных на utf8mb4. Мне нужно обнаружить, прежде чем вставлять в сторону PHP и пропустить эту строку.

Я пробовал много способов сделать это, например, mb_detect_encoding возвращает мне, что эта строка является UTF-8.
Я нашел эту функцию:

public function contains_invalid_characters($text) {
return (bool) preg_match('/[a-zA-Z0-9äöüß "!§$%&\/()=[\]\?.:,;\-_]/u', $text);
}

И это работает, но это обнаруживает меня много строк из языков со всего мира, которые я хочу иметь в базе данных, как

олей, عيناها или عين

Мне нужно обнаружить только строки, которые выглядят как значки или что-то, что я не знаю, как я могу назвать это. Любая помощь будет отличной

2

Решение

Даже у меня была та же проблема, это решение, которое я нашел в Интернете. Вы можете использовать эту функцию, чтобы обнаружить эти специальные символы.

function has_emojis( $string ) {

preg_match( '/[\x{1F600}-\x{1F64F}]/u', $string, $matches_emo );

return !empty( $matches_emo[0] ) ? true : false;

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector