Red de conocimiento informático - Material del sitio web - Cómo eliminar caracteres chinos de cadenas PHP

Cómo eliminar caracteres chinos de cadenas PHP

Ahora permítame resumirle el método para interceptar cadenas chinas con PHP. Existen principios y códigos fuente: Solución 1: Método para interceptar cadenas chinas con PHP. Dado que la página de inicio del sitio web y vTigerCRM a menudo aparecen confusas al interceptar cadenas chinas (usando). substr), hoy encontré una mejor manera de interceptar cadenas chinas y me gustaría compartirla con ustedes. function msubstr($str, $start, $len) {

$tmpstr = ""

$strlen = $start $len; $i = 0; $i lt; $strlen; $i ) {

if(ord(substr($str, $i, 1)) gt; 0xa0) {

$tmpstr .= substr($str, $i, 2);

$i;

} else

$tmpstr .= substr($str, $i, 1);

}

Devuelve $tmpstr;

}Programa 2: PHP intercepta una cadena UTF-8 para resolver el problema del ancho medio/ *** ******************************************* **** * *************

* PHP intercepta cadenas UTF-8 y resuelve el problema del ancho medio.

* El inglés y los números (ancho medio) son de 1 byte (8 bits), los chinos (ancho completo) son de 3 bytes

* @return La cadena obtenida, cuando $ Cuando len es menor o igual a 0, se devolverá la cadena completa

* @param $str Cadena de origen

* $len La longitud de la subcadena izquierda

** ********************************************** * ****************/

función utf_substr($str, $len)

{

para ($i =0; $ilt; $ len; $i )

{

$temp_str=substr($str, 0, 1);

if(ord ($temp_str) gt; 127)

{

$i;

if($ilt;$len)

{

$new_str[]=substr($str,0,3);

$str=substr($str,3);

}

}

else

{

$new_str[]=substr($str, 0, 1);

$str=substr($str,1);

}

}

return join($new_str);

} gt ;php utf-8 String Interceptlt;?

función cutstr($cadena, $longitud) {

preg_match_all("/[x01-x7f]|[xc2-xdf ][x80 -xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80- xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf ]|[ xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/", $string, $info);

for($i=0; $ilt; count ($ información [0]); $i ) {

$wordscut .= $info[0][$i];

$j = ord($info[0] [$i ]) gt; 127 ? $j 2: $j 1;

if ($j gt; $longitud - 3) {

return $wordscut.... " ;

}

}

return join('', $info[0]);

}

$string="242432 La conciencia de la oposición es 456 culpable de la ubicación generalizada de la embajada 7890";

for($i=0; $ilt; strlen( $string); $i )

{

echo cutstr($string,$i)."lt;brgt;"

} gt;

Función de cadena Intercept UTF-8 para Admite varios idiomas. Las cadenas en la base de datos se pueden guardar como codificación UTF-8. Durante el desarrollo del sitio web, es posible que necesite utilizar PHP para interceptar algunas cadenas.

Para evitar caracteres confusos, la siguiente función de interceptación de cadenas UTF-8 se puede escribir de acuerdo con el principio de UTF-8. Para obtener más información, consulte las preguntas frecuentes sobre UTF-8. Los caracteres codificados en UTF-8 pueden constar de 1 a 3 bytes. Se puede pasar el número específico de bytes. Juzgue el primer byte. (Teóricamente puede ser más largo, pero se supone que no excede los 3 bytes)

Si el primer byte es mayor que 224, se combinará con los siguientes 2 bytes para formar un carácter UTF-8

Si el primer byte es mayor que 192 y menor que 224, se combina con el siguiente byte para formar un carácter UTF-8

Si no, el primer byte en sí es un Carácter inglés (incluye números y algunos signos de puntuación).

número de caracteres)

function cut_str($sourcestr, $cutlength)

{

$returnstr=''

$i = 0;

$n=0;

$str_length=strlen($sourcestr); // Número de bytes de la cadena

while (($nlt) ;$cutlength) y ($ilt;=$str_length))

{

$temp_str=substr($sourcestr,$i,1); $ascnum=Ord ($temp_str);//Obtener el código ascii del $i ésimo carácter en la cadena

if ($ascnumgt;=224) //Si el bit ASCII está alto con 224,

{

$returnstr=$returnstr.substr($sourcestr, $i, 3); // Según la especificación de codificación UTF-8, 3 caracteres consecutivos se cuentan como un carácter.

$i=$i 3; // Los bytes reales cuentan como 3

$n

}

elseif ($ascnumgt; ;=192) //si la altura del bit ASCII es la misma que 192,

{

$returnstr=$returnstr.substr($sourcestr, $i, 2); / Según la especificación de codificación UTF -8, 2 caracteres consecutivos se cuentan como un carácter

$i=$i 2 //Los bytes reales se cuentan como 2

$n; //Longitud de la cadena Contado como 1

}

elseif ($ascnumgt;=65 amp;amp; $ascnumlt;=90) //Si es una letra mayúscula,

{

$returnstr=$returnstr.substr($ sourcestr, $i, 1);

$i=$i 1; los bytes todavía se cuentan como 1

p>

$n; //Pero para la belleza general, las letras mayúsculas cuentan como un carácter alto

}

De lo contrario //Incluye signos de puntuación en minúsculas y de ancho medio,

{

$returnstr=$returnstr.substr($sourcestr, $i, 1;

$i=$i 1; //El recuento de bytes real es 1

$n=$n 0.5; //Letras minúsculas y signos de puntuación de ancho medio, etc., el ancho de la palabra es la mitad de alto. ..

}

}

if ($str_lengthgt; $cutlength){

$returnstr = $returnstr .". ." ; // Si se excede la longitud, agregue un apóstrofe al final

}

Devuelve $returnstr;} Intercepta la función de cadena utf-8 FSubstr($title, $start, $len="", $magic=true)

{

/***

/***

<

p>* desarrollado por Smartpig

* mailto: d.einstein@263.net

*/if($len == "") $len=strlen($title);

if($start != 0)

{

$startv = ord(substr($title,$start,1));

if($startv gt; = 128)

{

si($startv lt; 192)

{

for($i=$start-1;$igt;0;

{

$tempv = ord(substr($title,$i,1));

p>

if($tempv gt; = 192) descanso

}

$inicio = $ i;

}

}

if(strlen($title)lt;=$len) return substr($title,$start,$len);

$alen = 0;

$blen = 0;

$realnum = 0;

for($i=$inicio; $ilt;strlen( $título); $i )

{

$ctype = 0

$cstep = 0; >$cur = substr ($título, $i, 1

if($cur == "amp;")

{

if( substr($título, $i, 4) == "lt;")

{

$cstep = 4

$longitud = 4; /p>

$i = 3;

$numero real

if($magic)

{

$alen ;

}

}

else if(substr($title,$i,4) == "gt;")

{

$ cstep = 4;

$longitud = 4;

$i = 3

$realnum ; > if($magic )

{

$alen

}

}

más si( substr($título, $i, 5) == "amp;")

{

$cstep = 5

$longitud = 5; /p>

$i = 4;

$numero real

if($magia)

{

$alen ;

}

}

else if( substr($title, $i, 6) == """)

{

$cpaso = 6

$longitud = 6

$i = 5

$ número real;

;

if($magic)

{

$alen ;

}

}

else if(preg_match("/(d );?/i", substr($title, $i, 8), $match))

{

$cstep = strlen($match[0]);

$length = strlen($match[0]);

$i = strlen($match [0])- 1;

$realnum;

if($magic)

{

$blen;

$ ctype = 1;

}

}

}else{

if(ord($cur) gt;=252)

{

$cpaso = 6

$longitud = 6

$i = 5; $realnum ;

if($magic)

{

$blen ;

$ ctype = 1;

}

}elseif(ord($cur)gt;=248){

$cstep = 5

$longitud = 5; p>

$i = 4;

$numeroreal

if($ magia)

{

$ ctype = 1;

$blen

}

}elseif(ord($cur)gt;=240){

$cpaso = 4;

$longitud = 4

$i = 3;

$realnum

if($magia; )

{

$blen

$ctype = 1;

}

}elseif(ord) ($ cur)gt;=224){

$ cstep = 3;

$longitud = 3

$i = 2;

$realnum;

if($magic)

{

$ctype = 1;

$blen;

}

} elseif(ord($cur)gt;=192){

$cstep = 2

$longitud = 2; ;

$i = 1

$numero real

if($magic)

{

$blen )

$ctype = 1

}

}elseif(ord($cur)gt;=128){

$ longitud = 1;

}else{

$cstep = 1;

$longitud =1;

lnum;

if($magic)

{

if(ord($cur) gt; = 65 amp; amp; ord($cur) lt ;= 90)

{

$blen ;

}else{

$alen ;

}

}

}

}

if($magia)

{

if(($blen*2 $alen) == ($len*2)) descanso;

if(($blen*2 $alen) == ($len*2 1))

{

if($ctype == 1)

{

$longitud -= $cstep;

romper;

}else{

romper

}

}else{

si($ realnum == $len) descanso;

}

}

unset($cur);

unset($alen);

unset($blen);

unset($realnum);

unset($ctype);

unset($cstep); );

return substr($title, $start, $length);

}