Maison >développement back-end >tutoriel php >PHP récupère la nième occurrence d'un caractère dans une chaîne et la position de la chaîne

PHP récupère la nième occurrence d'un caractère dans une chaîne et la position de la chaîne

藏色散人
藏色散人avant
2019-12-04 13:25:444324parcourir

Parce que j'ai souvent besoin d'obtenir une partie du texte dans la chaîne après avoir récupéré le code source de la page Web, mais je ne sais pas comment utiliser les expressions régulières. Les expressions que j'écris ne peuvent souvent pas obtenir le contenu souhaité, donc. J'ai écrit moi-même une fonction qui permet d'accéder au texte souhaité.

Recommandations associées : "Tutoriel PHP"

1. Fonction d'implémentation

/*
*取字符串中间文本
* @paramstring$str需要处理的字符串
* @paramstring $start_str 目标字符串‘前’的字符
* @paramstring $stop_str  目标字符串‘后’的字符
* @paramint $count     需要查找的次数
* @paramint $n   从第n个位置开始查找
* @returnarray$data返回查找满足条件要求的数组字符串
*/
function  get_msg($str,$start_str,$stop_str,$count,$n){
  $start=$n;  //从第n个位置开始查找
  $data=array();
  for($i=0;$i<$count;$i++){
$start=strpos($str,$start_str,$start);
$stop=strpos($str,$stop_str,$start);
$start=strlen($start_str)+$start;
$data[$i]= substr($str,$start,$stop-$start);
$start=$stop;
}
return $data;
  }

2. Exemple d'implémentation

<?php
$stra = "你看这是一个字符串";
$strb = "你看这依然是个字符串,你看这依然是个字符串,你看这个依然就取不到";
$resultArra = get_msg($stra,"你看","符串",1,0); //从第0个位置开始查找,取目标  &#39;这是一个字&#39; ,并且查找1次
$resultArrb = get_msg($strb,"你看这","是个",3,0);//从第0个位置开始查找,取目标  &#39;依然&#39; ,并且查找3次
print_r($resultArra);
print_r($resultArrb);
function  get_msg($str, $start_str, $stop_str, $count, $n) {
  $start=$n;  //从第n个位置开始查找
  $data=array();
  for($i=0;$i<$count;$i++){
$start=strpos($str,$start_str,$start);
$stop=strpos($str,$stop_str,$start);
$start=strlen($start_str)+$start;
$data[$i]= substr($str,$start,$stop-$start);
$start=$stop;
}
return $data;
  }
?>

Renvoyer les résultats<.>

Array ( [0] => 这是一个字 ) 
Array ( [0] => 依然 [1] => 依然 [2] => )

Bien qu'il y ait trois caractères 'Yi' dans la deuxième chaîne $strb, seuls deux d'entre eux remplissent les conditions transmises dans la fonction, donc seuls deux qui remplissent les conditions seront trouvés.

Bien sûr, ce n'est qu'un exemple simple, des chaînes plus complexes peuvent également être utilisées, il suffit de passer les conditions correspondantes.

3. Rechercher la nième occurrence d'un caractère ou d'une chaîne

Ceci peut être utilisé en conjonction avec la fonction ci-dessus, selon les exigences

/*查找字符、字符串第n次出现的位置
*@param string $str    原始字符串
*@param string $find需要查找的字符、字符串
*@param int    $n第几次出现的字符、字符串
*@return int   $count返回第n次出现的位置
*/
function str_n_pos($str,$find,$n){
        for ($i=1;$i<=$n;$i++){
            $pos = strpos($str,$find);
            $str = substr($str,$pos+1);
            $pos_val=$pos+$pos_val+1;
        }
$count = $pos_val-1;
        return $count; 
    }

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer