Dans l'article précédent "Apprentissage des chaînes PHP : Comment supprimer d'autres caractères et ne laisser que des chiffres", nous avons présenté la méthode d'utilisation de la boucle for et de la fonction in_array() ou is_numeric() pour extraire les caractères numériques dans une chaîne. Cette fois, nous continuons à apprendre et à pratiquer les chaînes PHP et à présenter plusieurs autres méthodes d'extraction de caractères numériques dans des chaînes.
Extraire des caractères numériques d'une chaîne est essentiellement une opération de filtrage de chaîne. Quand j'ai vu le filtrage de chaînes, j'ai pensé à « expression régulière ».
L'expression régulière est une formule logique pour les opérations sur les chaînes. Elle utilise des caractères spécifiques prédéfinis et des combinaisons de ces caractères spécifiques pour former une "chaîne de règles". Cette "chaîne de règles" est utilisée pour exprimer une logique de filtrage des chaînes.
Les expressions régulières construisent des modèles avec des règles spécifiques, les comparent avec les informations de chaîne d'entrée et les utilisent dans des fonctions spécifiques pour réaliser des opérations telles que la correspondance de chaînes, la recherche, le remplacement et la segmentation.
Voyons comment utiliser des expressions régulières pour filtrer des chaînes, extraire uniquement les caractères numériques de la chaîne et renvoyer une sous-chaîne composée de ces caractères numériques.
Par exemple, étant donné la chaîne suivante
$str ='0我是123456一段测试的字789符串0';
, nous souhaitons renvoyer une sous-chaîne composée de caractères numériques "01234567890
" ! 01234567890
”!
方法1、使用preg_replace()函数
分析一下上面的关键代码:
preg_replace("/[^0-9]/", "", $str)
的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符,即删除这些字符即可。那么就只剩下数字字符了,因此输出结果为:
我们来简单了解一下preg_replace()函数
preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数,该它的语法格式为“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换;可选参数 limit 用于设置最大可替换次数(默认值是-1,可无限制)。
方法2:使用preg_match_all()函数
分析一下上面的代码:
preg_match_all('/d+/',$str,$array)
的意思为在字符串$str
中多次查找只包含0~9间数字字符的子串,将每次的匹配结果放在一个数组$array
中。我们使用var_dump($array)
来输出这个数组看看:
会发现结果数组$array
是一个二维数组,包含匹配结果的元素是内层的数组。而想要将这些元素拼接成一个字符串,就需要嵌套两层foreach循环:
第一层循环中
foreach($array as $arr){ }
将内层数组作为值赋给$arr
,所以在第二层循环中需要遍历的数组变成了$arr
foreach($arr as $value){ $result .= $value; }
在每次循环中,将数组值赋给变量$value,然后使用“.=
”运算符拼接到字符串$result
中,因此一开始$result
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
Analysez le code clé ci-dessus :
preg_replace("/[^0-9]/", "", $str)
signifie faire correspondre des caractères autres que les nombres entre 0 et 9, et remplacer ces caractères par des caractères vides, c'est-à-dire supprimer ces caractères. Ensuite, il ne reste que des caractères numériques, le résultat de sortie est donc :
Jetons un bref aperçu de la fonction preg_replace()
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
", ce qui signifie rechercher la partie du sujet qui correspond au modèle, et le remplace par Replace ; le paramètre facultatif limit est utilisé pour définir le nombre maximum de substitutions (la valeur par défaut est -1, illimité). rrreee
Analysez le code ci-dessus :preg_match_all('/d+/',$str,$array)
signifie en caractères Rechercher le chaîne $str
plusieurs fois pour les sous-chaînes contenant uniquement des caractères numériques entre 0 et 9, et placez les résultats correspondants à chaque fois dans un tableau $array
. Utilisons var_dump($array)
pour afficher ce tableau et voir :
$array
est un tableau à deux dimensions et que les éléments contenant les résultats correspondants sont les tableaux internes. Si vous souhaitez regrouper ces éléments dans une chaîne, vous devez imbriquer deux niveaux de boucles foreach :
Dans le premier niveau de la boucle
attribuez le tableau interne comme valeur à$ arr
, donc le tableau qui doit être parcouru dans la deuxième boucle devient $arr
🎜🎜🎜🎜rrreee🎜🎜🎜Dans chaque boucle, attribuez la valeur du tableau à la variable $ value, puis utilisez l'opérateur ".=
" pour l'insérer dans la chaîne $result
, donc $result
doit d'abord être une chaîne vide . 🎜🎜🎜🎜🎜Le résultat de sortie est : 🎜🎜🎜🎜🎜 Jetons un bref coup d'œil à la fonction preg_match_all(). La fonction 🎜🎜preg_match_all() peut rechercher tous les résultats dans une chaîne pouvant correspondre à une expression régulière. C'est une fonction qui effectue une correspondance d'expression régulière globale. Son format de syntaxe est 🎜rrreee🎜🎜🎜$pattern expression régulière 🎜🎜🎜 🎜. $subject Chaîne correspondante 🎜🎜🎜🎜$matches Tous les résultats correspondants (tableau) 🎜🎜🎜🎜preg_match_all() correspondra à tous les résultats Si vous souhaitez arrêter la correspondance après une correspondance réussie, vous devez utiliser la fonction preg_match(). 🎜🎜D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo php🎜🎜🎜 Enfin, je recommande de lire un cours classique "🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜", c'est gratuit~ venez apprendre ! 🎜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!