내 웹 사이트의 텍스트 필드에있는 문자 수를 계산하고 싶습니다. 텍스트 필드는 아스키 아트 및 기타 특수 문자를 포함하여 사용자로부터의 모든 유형의 입력을 허용합니다. 사용자가 일반 문자로 입력하면 strlen ($ message)을 사용하여 값을 반환 할 수 있지만 사용자가 Â 또는 ©와 같은 특수 문자를 사용하면 개수가 잘못됩니다.PHP로 특수 문자 계산하기
무거운 물건을 들지 않고도 모든 것을 셀 수있는 간단한 방법이 있습니까?
내 웹 사이트의 텍스트 필드에있는 문자 수를 계산하고 싶습니다. 텍스트 필드는 아스키 아트 및 기타 특수 문자를 포함하여 사용자로부터의 모든 유형의 입력을 허용합니다. 사용자가 일반 문자로 입력하면 strlen ($ message)을 사용하여 값을 반환 할 수 있지만 사용자가 Â 또는 ©와 같은 특수 문자를 사용하면 개수가 잘못됩니다.PHP로 특수 문자 계산하기
무거운 물건을 들지 않고도 모든 것을 셀 수있는 간단한 방법이 있습니까?
, 당신은이 작업을 수행 할 수 있습니다
$count = preg_match_all('/\X/u', $text);
Here 몇 가지 설명입니다. 유니 코드 그래픽은 유니 코드 코드 포인트 ("combining marks")를 포함하여 "문자"(유니 코드 코드 포인트)입니다.
mb_strlen($text, 'UTF-8')
은 별도의 문자로 표시를 조합합니다. 여기
$count = preg_match_all('/\X/u', html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
와우 - 놀랍습니다! 완벽하게 작동합니다. 감사!!! – user1399181
strlen & mb_strlen이 모두 정상적으로 작동합니다.
입력 한 특수 문자가 표시되지 않을 수도 있습니다 (유니 코드). 따라서 읽을 수없는 문자를 시도하십시오.
희망이 도움이됩니다. 귀하의 의견은 UTF-8 인코딩과 유니 코드 이 제자 계산하려면
mb_stren은 내가 제공 한 예제에서 작동합니다. 그러나 누군가가 "<"보다 작은 부호를 입력하면 wordpress로 <으로 변환되고 4 문자로 계산됩니다. 나는 그것이 wordpress로 변환되는 유일한 문자라고 믿기 때문에, 나는 less-than 기호 (n)의 수를 세고 전체 문자 수에서 4n을 뺄 수 있다고 생각하고있다. – user1399181
당신이가는 : 당신의 코멘트에 의해 판단, 귀하의 의견은 자신의 HTML 엔티티 동등한로 변환 일부 문자를 가질 수 있기 때문에
, 당신은 먼저 html_entity_decode()
해야한다. 작동 원리
function countumlauts($str) {
return strlen($str) - iconv_strlen($str);
}
: 특수 문자는 하나 이상의 바이트를 사용합니다. strlen은 바이트를 계산하고 iconv_strlen은 문자를 계산합니다.
멀티 바이트 문자열의 경우 http://php.net/mb_strlen –
문자열이 화면에 얼마나 오랫동안 있는지 알고 싶다면 힘듭니다. 'mb_strlen()'은 "문자"만을 계산하지만 표시되지 않는 문자, 선행 문자를 수정하는 문자 (유니 코드 이상) 등이 있습니다. –