Heim > Backend-Entwicklung > PHP-Tutorial > PHP chinesischer String-Abfang PHP-Abfang chinesischer String-Code

PHP chinesischer String-Abfang PHP-Abfang chinesischer String-Code

巴扎黑
Freigeben: 2016-11-22 15:58:26
Original
900 Leute haben es durchsucht

Wenn PHP chinesische Zeichenfolgen abfängt, bestimmt es im Allgemeinen, ob es sich um ein Doppelbyte-Zeichen handelt, basierend darauf, ob der Wert größer oder gleich 128 ist, um unvollständiges Abfangen und verstümmelte Zeichen zu vermeiden.
Wenn jedoch Situationen auftreten, in denen Chinesisch und Englisch gemischt werden und spezielle Symbole enthalten sind, ist das Problem nicht so einfach zu lösen.

Das Folgende ist eine Funktion, die das Problem des chinesischen String-Abfangens umfassend löst. Freunde in Not können sich darauf beziehen.

Hinweis:
1. Der len-Parameter basiert auf 2 englischen Zeichen falsch, dann behandeln Chinesisch und Englisch die absolute Anzahl von Zeichen
3. Besonders geeignet für mit htmlspecialchars() codierte Zeichenfolgen
4 Kann den Entity-Zeichenmodus in GB2312 (??) korrekt verarbeiten >
Beispiel:
/**
@Intercept Chinesischer String, geeignet für GB2312-Kodierung
@http://www.jbxue.com
*/
function FSubstr($title,$start,$len="",$magic=true)
{
$ length = 0;
if($len == "") $len = strlen($title);

//Beurteile die Startposition auf eine falsche Position
if ($start > 0 )
{
$cnum = 0;
for($i=0;$i<$start;$i )
{
if(ord(substr ($title,$i ,1)) >= 128) $cnum ; );
}

if(strlen($title)<=$len) return substr($title,$start,$len); 🎜>$blen = 0 ;

$realnum = 0;

for($i=$start;$i{
$ctype = 0;
$cstep = 0;
$cur = substr($title,$i,1);
if($cur == "&")
{
if(substr($ title,$i,4) == "<")
{
$cstep = 4;
$length = 4;
$realnum;
if($magic)
{
$alen ;}
}
else if(substr($title,$i,4) == "> ;")
{
$cstep = 4;
$length = 4;
$i = 3;
$realnum ;
if($magic)
{
$alen;
}
else if(substr($title,$i,5) == "&")
{
$cstep = 5; $length = 5;
$i = 4;
$realnum;
if($magic)
{
$alen; == """) >{
$cstep = 6;
$i = 5;
$realnum ;
}
}
else if(substr($title,$i,6) == "'")
{
$cstep = 6
$length = 6;
$i = 5;
$realnum ;
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)>=128)
{
$cstep = 2; 🎜>$length = 2;
$realnum ;
if($magic)
$ctype = 1;
}
}else{
$cstep = 1;
$realnum ;
if($magic)
; }
}
}

if($magic)
{
if(($blen*2 $alen) == ($len*2)) break; >if(($blen*2 $alen) == ($len*2 1))
{
if($ctype == 1)
{
$length -= $cstep;
break;
}else{
break;
}
}else{
if($realnum == $len) break; >}

unset($cur);
unset($blen);
unset( $realnum);
unset($cstep);

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage