위챗 인터페이스를 통해 사용자의 닉네임을 읽어보는데, 위 사진처럼 이름 중 상당수가 특수문자입니다. 이러한 특수문자가 mysql 데이터베이스에 저장되어 있지 않으면 의미가 없습니다. 그래서 필터링해서 이름 문자에서 한자와 숫자만 추출하고 싶습니다. 이것을 PHP로 작성하는 방법.
위챗 인터페이스를 통해 사용자의 닉네임을 읽어보는데, 위 사진처럼 이름 중 상당수가 특수문자입니다. 이러한 특수문자가 mysql 데이터베이스에 저장되어 있지 않으면 의미가 없습니다. 그래서 필터링해서 이름 문자에서 한자와 숫자만 추출하고 싶습니다. 이것을 PHP로 작성하는 방법.
이러한 특수 문자를 mysql 데이터베이스에 저장할 수 없다면 의미가 없습니다
----의미가 있습니다, 아이콘, 필드 유형에 varbinary를 사용해 보세요
사실 이모지 이모티콘은 mysql에 저장할 수 없습니다
mysql5.5 이하 버전에서는 이런 표현을 처리하지 않고 직접 저장하면 오류가 발생합니다
데이터베이스를 수정해보시면 됩니다 utf8mb4로 설정된 문자
github에 이모티콘이 있습니다 유니코드로 추출된 범위, 필터링 중에 참조 범위가 일치할 수 있습니다
우선, 이런 것들이 당신에게 아무런 의미가 없다면 저장하지 마세요.
일부만 추출해도 소용없습니다.
완전한 액세스를 위해 mysql은 문자 집합을 변환하기만 하면 됩니다. utf8mb4는 utf8의 상위 집합이며 이전 버전과 호환됩니다.
두 번째 단계는 코드 수준에서 트랜스코딩하는 것입니다. 인코딩하고, 저장하고, 꺼내고, 디코딩하고, 다시 표시할 수 있습니다.
마지막 방법은 사실 이모지만으로는 저장할 수 없습니다. 이모티콘을 필터링해도 괜찮습니다.
<code>public static function emoji($text) { $clean_text = ""; // Match Emoticons $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u'; $clean_text = preg_replace($regexEmoticons, '', $text); // Match Miscellaneous Symbols and Pictographs $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u'; $clean_text = preg_replace($regexSymbols, '', $clean_text); // Match Transport And Map Symbols $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u'; $clean_text = preg_replace($regexTransport, '', $clean_text); // Match Miscellaneous Symbols $regexMisc = '/[\x{2600}-\x{26FF}]/u'; $clean_text = preg_replace($regexMisc, '', $clean_text); // Match Dingbats $regexDingbats = '/[\x{2700}-\x{27BF}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); $regexDingbats = '/[\x{231a}-\x{23ab}\x{23e9}-\x{23ec}\x{23f0}-\x{23f3}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); return $clean_text; }</code>
출처는 여기