나는 간단 할 것이라고 생각하지만 꽤 복잡하다는 문제가 있습니다.PHP 및 멀티 바이트 문자 사용에 대한 도움말
로마자, 서유럽 어, 일본어 및 한국어 문자와 구두점이 혼합 된 긴 UTF-8 문자열이 있습니다. 많은 것은 멀티 바이트 문자이지만 일부는 생각하지 않습니다.
나는이 일을해야합니다
- 확인 (새 문자열, 속는 박탈 및 출력) 중복 문자가 없는지 확인합니다.
- 새 문자열을 무작위로 섞습니다. (죄송합니다, 내가 바로 포맷을 인용 코드를 얻이 수없는 것 ...)
function uniquechars($string) {
$l = mb_strlen($string);
$unique = array();
for($i = 0; $i < $l; $i++) {
$char = mb_substr($string, $i, 1);
if(!array_key_exists($char, $unique))
$unique[$char] = 0;
$unique[$char]++;
}
$uniquekeys = join('', array_keys($unique));
return $uniquekeys;
}
과 :
function unicode_shuffle($string)
{
$len = mb_strlen($string);
$sploded = array();
while($len-- > 0) {
$sploded[] = mb_substr($string, $len, 1);
}
shuffle($sploded);
$shuffled = join('', $sploded);
return $shuffled;
}
그 두 가지 기능을 사용하여, 사람이 매우 유용하게 제공되었으므로, 나는 모든 것이 설정되었다고 생각합니다. 흥미롭게도, 유니크 문자열 (중복 없음)처럼 보이고 셔플 링 된 문자열에는 같은 수의 문자가 포함되지 않습니다. (나는이 브라우저를 브라우저에서 강조 표시 한 다음 다른 응용 프로그램으로 잘라 붙이기를 원합니다. 한 문자열은 항상 위의 문자열과는 길이가 다르지만 종종 달라집니다 ... 같은 문자 수는 아닙니다. 매회 잘린!).
죄송합니다. PHP에 대해 잘 모르거나 자기 자신을 괴롭히기 위해 코딩하는 것에 대해 미안하지만 여기에 무슨 일이 벌어지고 있습니까? 큰 긴 끈을 섞는 것이 쉬워야하는 것처럼 보이지만 분명히 생각보다 훨씬 어려워 보입니다. 이 작업을 수행하는 또 다른, 쉬운 방법이 있습니까? 문자열을 먼저 각 16 진수로 변환하고이를 섞어서 UTF-8로 다시 변환해야합니까? 화면이 아닌 파일로 출력해야합니까?
누구든지 제안 사항이 있으십니까? 미안 해요,이게 아주 새롭고, 어쩌면 나는 정말 바보 같은 짓을하고있을뿐입니다.
코드를 쉽게 포맷 할 수 있습니다. 모든 줄 앞에 4 칸을 사용하면 코드로 인식됩니다. 코드를 다시 포맷하십시오. –
나는 이미 그랬다. ... – apesa
@apesa : 고마워! 나는 어떻게 든 첫 줄에만 4 칸을 넣어야한다고 생각했습니다. – Dave