En php, si je veux utiliser substr() pour intercepter une chaîne entièrement en anglais, ce ne sera pas un problème si elle inclut du chinois ou de l'anglais, ce sera une tragédie, mais ne vous inquiétez pas, nous. peut utiliser d'autres méthodes pour le résoudre.
PHP intercepte les chaînes chinoises avec des caractères tronqués. C'est quelque chose que j'ai découvert récemment. J'ai déjà écrit un article sur la génération automatique de méta-informations. Cet article concernait l'utilisation de PHP pour intercepter les premiers mots d'un message. article comme méthode de description, mais IE6 ne peut pas charger CSS Voici un supplément.
Tout d'abord, nous devons clarifier ce problème. La raison pour laquelle IE6 ne parvient parfois pas à charger CSS est que le fichier est tronqué, ce qui fait que le lien suivant pour charger CSS n'est pas correctement analysé par IE6. . J'ai donc vu une page HTML pure, sans CSS, nue ! Après avoir clarifié le problème, le problème restant peut être facilement résolu, à savoir éviter les caractères tronqués. Puisque la fonction fournie par Wange a des caractères tronqués, j'ai trouvé une nouvelle fonction PHP pour résoudre ce problème de code tronqué.
La fonction substr() peut diviser du texte, mais vous rencontrerez souvent des problèmes si le texte à diviser comprend des caractères chinois.
L'utilisation de la fonction mb_substr() est similaire à celle de substr(), sauf qu'un paramètre supplémentaire est ajouté à la fin pour définir l'encodage de la chaîne.
Vous devriez comprendre la raison pour laquelle j'ai amélioré la méthode de Wange~~
Voici quelques méthodes de traitement plus avancées
Exemple 1
Le Code est le suivant
function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 $tmpstr = ""; $strlen = $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; }
Exemple 2
La chaîne est codée en UTF-8 et un caractère chinois occupe trois octets:
public static function chinoissubstr($str, $start, $len) { // $str fait référence à la chaîne, $start fait référence à la position de départ de la chaîne, $len fait référence à la longueur de la chaîne
$strlen = $start $len; // Utilisez $strlen pour stocker la longueur totale de la chaîne, c'est-à-dire de la position de départ de la chaîne à la longueur totale de la chaîne
Le code est le suivant
for($i = $start; $i < $strlen;) { if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数 值大于0xa0,则表示汉字 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等 于一个汉字 $i=$i+3; // 变量自加3 } else{ $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给 变量$tmpstr $i++; } } return $tmpstr; // 返回字符串 }
J'espère que cet article aidera tout le monde à résoudre le même problème avec la programmation PHP !
Pour plus d'articles sur PHP sur la résolution du problème des caractères chinois tronqués interceptés par substr(), veuillez faire attention au site Web PHP chinois !