Ich möchte alle Zeichen von Zeichen mit voller Breite in Zeichen mit halber Breite ändern, schreiben Sie die folgenden Codes, um die Aufgabe zu erledigen. zum Beispiel alle voller Breite Zeichen zu ändern, inWarum können nicht alle Zeichen von Zeichen mit voller Breite in Zeichen mit halber Breite geändert werden?
Codebit.cn - 聚合小段精华代码
in halber Breite Zeichen, in
codebit.cn - 聚合小段精华代码
Es gibt zwei Methoden, um das Ziel acheive, aber alle von ihnen versagt.
Alle php-Datei wurden als UTF-8-Format gespeichert.
Methode 1:
<?php
function fulltohalf($str){
$arr=Array(
'0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',
'5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',
'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',
'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',
'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',
'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',
'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',
'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',
'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',
't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',
'y' => 'y', 'z' => 'z', '-' => '-'
);
$new = '';
foreach ($str as $char){
if (isset ($arr[$char]))
$new .= $arr[$char];
else
$new .= $arr;
}
return $new;
}
$str="Codebit.cn - 聚合小段精华代码";
echo fulltohalf($str);
?>
Fehlermeldung:
Methode 2:
<?php
function fulltohalf($Str) {
$Queue = Array(
'0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',
'5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',
'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',
'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',
'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',
'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',
'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',
'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',
'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',
't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',
'y' => 'y', 'z' => 'z', '-' => '-'
);
return preg_replace("/([\xA3][\xB0-\xB9\xC1-\xDA\xE1-\xFA])/e","\$Queue[\\1]", $Str);
}
$str = "Codebit.cn - 聚合小段精华代码";
echo $str;
echo "<br />";
echo fulltohalf($str);
?>
Nachricht
Fehler:
Wie zwei von ihnen zu beheben?
Ich löste die Methode 1 Problem, die festen Codes sind wie folgt.
Bitte beachten Sie, dass Sie in Methode eins versuchen, über $ str zu iterieren, das kein Array ist. Wie auch immer ** Sie ** über Strings iterieren können, indem Sie eine for-Schleife wie 'für ($ i = 0; $ i
Anticom
Mein Gott, warum das benutzerdefinierte Array? Bitte sehen Sie meine einzeilige Antwort. PHP hat eine eingebaute Funktion für diese – Drakes