Как я могу обнаружить специальные символы в 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);
}
И это работает, но это обнаруживает меня много строк из языков со всего мира, которые я хочу иметь в базе данных, как
олей, عيناها или عين
Мне нужно обнаружить только строки, которые выглядят как значки или что-то, что я не знаю, как я могу назвать это. Любая помощь будет отличной
Даже у меня была та же проблема, это решение, которое я нашел в Интернете. Вы можете использовать эту функцию, чтобы обнаружить эти специальные символы.
function has_emojis( $string ) {
preg_match( '/[\x{1F600}-\x{1F64F}]/u', $string, $matches_emo );
return !empty( $matches_emo[0] ) ? true : false;
}
Других решений пока нет …