Cómo eliminar caracteres chinos de cadenas PHP
$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, p>
{
$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>
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;")
{ p>
$ 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> 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; p>
}
} 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);
}