完善解决截取中文汉字不乱码-PHP字符串函数(支持utf8、GBK、GB2312)
完美解决截取中文汉字不乱码-PHP字符串函数(支持utf8、GBK、GB2312)
我们主要对utf8、GBK、GB2312的截取中文字符串进行讲解,完美解决截取中文汉字不乱码-PHP字符串函数:
1、截取GB2312以及GBK编码的字符串
函数功能:截取GB2312以及GBK编码的字符串,从第一个字符开始截取,2个长度代表一个汉字
$str————截取源字符串
$len————截取长度(2代表一个汉字)
PS:该函数不能用于utf8编码字符串,会出现乱码
function splitStr($str,$len)
{
if($len{
return false;
}
else
{
$sLen=strlen($str);
if($len>=$sLen)
return $str;
else
{
for($i=0;$i{
if(ord(substr($str,$i,1))>0xa0)
$i++;
}if($i>=$len)
return substr($str,0,$len);
elseif(ord(substr($str,$i,1))>0xa0)
return substr($str,0,$len-1);
else
return substr($str,0,$len);
}
}
}
2、截取GB2312以及GBK编码的字符串
函数功能:截取GB2312以及GBK编码的字符串,可以设置截取位置和长度,2个长度代表一个汉字
$str————截取源字符串
$start———-起始位置,不能为空,从1算起
$len————截取长度(2代表一个汉字),如果为空则截取到字符串末尾
PS:该函数不能用于utf8编码字符串,会出现乱码
function substr_for_gb2312($str,$start,$len=null)
{
$totlelength = strlen($str);//特例情况
if ($len == null) $len = $totlelength;
if ($len ==0) return “”;
if ($len >= $totlelength && $start == 0 ) return $str;
if ($start > $totlelength) return “”;//分析$start
if ($start 0时的定位.
{
if ( abs($start) >= $totlelength )
$start = 0;
else
$start = $totlelength – abs($start);
}//确定起始位置,当起始位拆分某汉字时,返回值包含此汉字.
if ($start > 0)
{
$i = $start-1;
$flag = -1;
while ($i >= 0)
{
if ( ord(substr($str,$i,1)) > 160)
{
$flag = -1*$flag;
}
else break;
$i–;
}
if($flag==1)
{
$start = $start – 1;
$len++; //保证不位移.
}
}$str = substr($str,$start);//截除字符串$str的$start位前的字符
$totlelength = strlen($str);//确定结束位置,当结束位拆分某汉字时,返回值不包含此汉字.
if ($lenif ($len $i=min($len,$totlelength);
$i–;
$flag = -1;
while ($i >= 0)
{
if (ord(substr($str,$i,1))>160)
{
$flag=-1*$flag;
}
else break;
$i–;
}if($flag == 1)?? ?$len=$len-1;
$subit=substr($str,0,$len);return $subit;
}
3、截取utf8或GB2312或者GBK编码的字符串
函数功能:截取utf8或GB2312或者GBK编码的字符串,从第一个字符开始截取,1个长度代表一个汉字
$sourcestr————截取源字符串
$cutlength————截取长度(字数)
PS:这个函数很万能,但是相对前两个耗资源一些
function substr_for_utf8($sourcestr,$cutlength)
{
$returnstr=”;
$i=0;
$n=0;
$str_length=strlen($sourcestr);?? ?//字符串的字节数
while (($n{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str); //得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}
elseif ($ascnum>=192)//如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}
elseif ($ascnum>=65 && $ascnum{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1;?? ?//实际的Byte数计1个
$n=$n+0.5;?? ?//小写字母和半角标点等与半个高位字符宽…
}
}if ($str_length>$cutlength)
{
$returnstr = $returnstr . “…”;?? ?//超过长度时在尾处加上省略号
}return $returnstr;
}
最后,你可以简单写个程序调用一下试试,例如:
$a=”我们都会写Hello world!这个最简单的程序。”;
echo $a.”
”;
$a=substr_for_utf8($a,4);
echo $a.”
”;
?>
怎么样?不错吧,那就快来试试吧 O(∩_∩)O哈哈~

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Docker-Startfehler: 1. Überprüfen Sie den Betriebsstatus und geben Sie dann den belegten Speicher über den Befehl „echo 3 > /proc/sys/vm/drop_caches“ frei. 2. Verwenden Sie „$netstat -nltp|grep ..“. "-Befehl, um zu überprüfen, ob der Port belegt ist. Wenn nach dem Online-Gehen festgestellt wird, dass er belegt ist, ändern Sie ihn in einen verfügbaren Port und starten Sie neu.

In diesem Artikel wird der ASCII-Wert des ersten Zeichens der von PHP zurückgegebenen Zeichenfolge ausführlich erläutert. Der Herausgeber hält dies für sehr praktisch, daher teile ich ihn als Referenz mit. PHP gibt den ASCII-Wert des ersten Zeichens einer Zeichenfolge zurück. Einführung In PHP ist das Abrufen des ASCII-Werts des ersten Zeichens einer Zeichenfolge eine gängige Operation, die grundlegende Kenntnisse der Zeichenfolgenverarbeitung und Zeichenkodierung erfordert. ASCII-Werte werden zur Darstellung des numerischen Werts von Zeichen in Computersystemen verwendet und sind für den Zeichenvergleich, die Datenübertragung und die Speicherung von entscheidender Bedeutung. Der Prozess zum Abrufen des ASCII-Werts des ersten Zeichens einer Zeichenfolge umfasst die folgenden Schritte: Abrufen der Zeichenfolge: Bestimmen Sie die Zeichenfolge, für die Sie den ASCII-Wert abrufen möchten. Es kann eine Variable oder eine String-Konstante sein

In diesem Artikel wird ausführlich erläutert, wie PHP die Zeichenfolge von der Startposition zur Endposition einer Zeichenfolge in einer anderen Zeichenfolge zurückgibt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit diesem Artikel können Sie etwas abgewinnen. Verwenden Sie die Funktion substr() in PHP, um Teilzeichenfolgen aus einer Zeichenfolge zu extrahieren. Die Funktion substr() kann Zeichen innerhalb eines angegebenen Bereichs aus einer Zeichenfolge extrahieren. Die Syntax lautet wie folgt: substr(string,start,length) wobei: string: der ursprüngliche String, aus dem der Teilstring extrahiert werden soll. start: Der Index der Startposition des Teilstrings (beginnend bei 0). Länge (optional): Die Länge des Teilstrings. Wenn nicht angegeben, dann

Lösung für den Knotenstartfehler: 1. Führen Sie „node xx.js“ direkt im Terminal aus. 2. Fügen Sie das Startup-Element „scripts“ hinzu: {“test“: „echo \“Fehler: kein Test angegeben\“ && Exit 1“ ,“start“: „node service.js“}“; 3. Führen Sie „npm start“ erneut aus.

1Die Grundeinheit des Unicode-Computerspeichers ist das Byte, das aus 8 Bits besteht. Da Englisch nur aus 26 Buchstaben plus einer Reihe von Symbolen besteht, können englische Zeichen direkt in Bytes gespeichert werden. Andere Sprachen (wie Chinesisch, Japanisch, Koreanisch usw.) müssen jedoch aufgrund der großen Anzahl von Zeichen mehrere Bytes für die Codierung verwenden. Mit der Verbreitung der Computertechnologie entwickelt sich die Technologie zur Kodierung nicht-lateinischer Zeichen weiter, es gibt jedoch immer noch zwei wesentliche Einschränkungen: keine Unterstützung mehrerer Sprachen: Das Kodierungsschema einer Sprache kann nicht in einer anderen Sprache verwendet werden und es gibt keinen einheitlichen Standard: Beispielsweise gibt es auf Chinesisch viele Codierungsstandards wie GBK, GB2312, GB18030 usw. Da die Codierungsmethoden nicht einheitlich sind, müssen Entwickler zwischen verschiedenen Codierungen hin und her konvertieren, und es treten zwangsläufig viele Fehler auf.

Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__? Wir alle wissen, dass die in Python integrierte Funktion repr() Objekte in Form von Zeichenfolgen ausdrücken kann, um unsere Identifizierung zu erleichtern. Dies ist die „String-Darstellung“. repr() erhält die String-Darstellung eines Objekts über die spezielle Methode __repr__. Wenn __repr__ nicht implementiert ist und wir eine Instanz eines Vektors auf der Konsole ausgeben, kann die resultierende Zeichenfolge sein. >>>classExample:pass>>>print(str(Example()))>>>

Verstehen Sie die Funktion substr() in PHP zum Abfangen von Zeichenfolgen. In der PHP-Sprache ist die Funktion substr() eine sehr nützliche Funktion zur Verarbeitung von Zeichenfolgen, die zum Abfangen von Zeichenfolgenfragmenten an einer bestimmten Position und Länge verwendet werden kann. Die Funktion substr() akzeptiert drei Parameter: die abzufangende Zeichenfolge, die Startposition des Abfangens und die Länge des Abfangens. Im Folgenden stellen wir die Verwendung der Funktion substr() im Detail vor und geben konkrete Codebeispiele. Grundlegende Verwendung der Funktion substr(). Funktion substr()

Startmethode und Ausführungsmethode Die Methode $start()$ wird verwendet, um einen Thread zu starten. Zu diesem Zeitpunkt befindet sich der Thread im Bereitschaftszustand (ausführbar) und wird nicht ausgeführt. Sobald die Zeitscheibe $ Die Ausführung der run()$-Methode beginnt. Der direkte Aufruf der Methode $run()$ ruft nur eine Methode in einer Klasse auf, die im Wesentlichen im aktuellen Thread ausgeführt wird. Daher kann dies nur durch Verwendung der Methode $start()$ zum Aufrufen von $run()$ erreicht werden Methode. Echtes Multithreading. Beispielcode@Slf4j(topic="c.Test4")publicclassTest4{publicstaticvoidmain(Strin
