Maison > développement back-end > Problème PHP > Quelles sont les méthodes pour intercepter les chaînes php ?

Quelles sont les méthodes pour intercepter les chaînes php ?

青灯夜游
Libérer: 2023-03-10 11:02:02
original
4248 Les gens l'ont consulté

Méthode : 1. Utilisez l'instruction "substr (chaîne, position de départ, longueur d'interception)" ; 2. Utilisez l'instruction "mb_substr (chaîne, position de départ, longueur d'interception, encodage)" ; Instruction mb_strcut (chaîne, position de départ, longueur d'interception, encodage) ; 4. Utilisez l'instruction "$str[position du caractère]".

Quelles sont les méthodes pour intercepter les chaînes php ?

L'environnement d'exploitation de ce tutoriel : système Windows7, version PHP7.1, ordinateur DELL G3

substr (chaîne, démarrage position, longueur d'interception)

Si la chaîne interceptée comporte plusieurs octets, des caractères tronqués apparaîtront, comme le chinois, adaptés à l'interception de lettres et de chiffres

$str = 'hello';
echo substr($str,1,2);//输出el
Copier après la connexion

mb_substr( String , position de départ, longueur d'interception, encodage des caractères)

Convient pour intercepter le chinois, segmenté par caractères

echo mb_substr('这个真的很nice',0,3,'utf-8'); //输出这个真
Copier après la connexion

mb_strcut (Chaîne, position de départ, longueur d'interception, encodage des caractères)

Diviser par octets

echo mb_strcut('这个真的很nice',0,3,'utf-8'); //输出这
Copier après la connexion

$str[0]

Traiter les chaînes comme des caractères Collection, le chinois n'est pas applicable !

$str = 'hello';
echo $str[0];//输出h
Copier après la connexion

Parfois, la chaîne contient des chiffres chinois et anglais, etc., alors personnalisez une fonction qui ne fait pas la distinction entre le chinois et l'anglais pour diviser la chaîne

/**
* 
* 中英混合的字符串截取
* @param 待截取字符串 $sourcestr
* @param 截取长度 $cutlength
*/
function sub_str($sourcestr, $cutlength) {
	$returnstr = '';//待返回字符串
	$i = 0;
	$n = 0;
	$str_length = strlen ( $sourcestr ); //字符串的字节数 
	while ( ($n < $cutlength) and ($i <= $str_length) ) {
		$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 <= 90) {//如果是大写字母,
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; //实际的Byte数仍计1个
			$n ++; //但考虑整体美观,大写字母计成一个高位字符
		}elseif ($ascnum >= 97 && $ascnum <= 122) {
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; //实际的Byte数仍计1个
			$n ++; //但考虑整体美观,大写字母计成一个高位字符
		} else {//其他情况下,半角标点符号,
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; 
			$n = $n + 0.5; 
		}
	}
	return $returnstr;
}
Copier après la connexion

Apprentissage recommandé : "PHP Tutoriel vidéo

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal