Maison  >  Article  >  développement back-end  >  Solution à l'avertissement PHP : argument non valide fourni pour strpos()

Solution à l'avertissement PHP : argument non valide fourni pour strpos()

WBOY
WBOYoriginal
2023-06-22 16:41:091423parcourir

Lorsque nous développons en PHP, nous rencontrons souvent le message d'erreur PHP Warning : argument invalide fourni pour strpos(). La signification de cette erreur est que les paramètres passés à la fonction strpos() ne sont pas valides, ce qui entraîne l'échec de l'exécution normale de la fonction. Dans cet article, nous aborderons les causes de ce problème et comment y remédier.

  1. Qu'est-ce que la fonction strpos() ?

Avant de commencer à discuter des mauvaises solutions, comprenons d'abord la fonction strpos(). La fonction strpos() est utilisée pour rechercher la première occurrence d'une autre chaîne dans une chaîne et renvoyer la valeur d'index correspondante. Sa syntaxe est la suivante :

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Le premier paramètre de cette fonction est la chaîne principale à trouver, le deuxième paramètre est la sous-chaîne à trouver dans la chaîne principale et le troisième paramètre est facultatif. Utilisez pour spécifier la position de départ. de la recherche.

  1. Cause du problème

Lorsque nous appelons la fonction strpos(), nous devons transmettre les paramètres corrects, sinon l'erreur Invalid argument fournie pour strpos() se produira. Cette erreur est généralement causée par les raisons suivantes :

  • Le premier paramètre doit être une chaîne. Cette erreur se produira si une valeur d’un autre type est transmise.
  • Le deuxième paramètre doit également être une chaîne. Cette erreur sera également déclenchée si une non-chaîne telle qu'un tableau ou un objet est transmise.
  • Si le premier paramètre est une chaîne vide, cette erreur sera signalée quelle que soit la manière dont le deuxième paramètre est passé. Étant donné qu’une chaîne vide ne contient aucune sous-chaîne, il est naturellement impossible d’y trouver des sous-chaînes.
  1. Solution

Ensuite, nous discuterons de la façon de résoudre l'erreur Invalid argument fournie pour strpos().

3.1 Vérifiez le type de paramètre transmis

Tout d'abord, nous devons vérifier si le type de paramètre que nous avons transmis à la fonction strpos() est correct. Pour ce faire, nous pouvons utiliser la fonction intégrée PHP gettype() pour obtenir le type du paramètre et nous assurer qu'il s'agit d'une chaîne. Par exemple, le code suivant vérifiera si la variable $haystack est une chaîne :

if (gettype($haystack) !== 'string') {
    // 如果 $haystack 不是字符串,那么输出错误
    echo "第一个参数必须是一个字符串";
}

De même, nous pouvons également vérifier si le deuxième paramètre est une chaîne.

if (gettype($needle) !== 'string') {
    // 如果 $needle 不是字符串,那么输出错误
    echo "第二个参数必须是一个字符串";
}

3.2 Vérifiez si le premier paramètre est une chaîne vide

Deuxièmement, nous devons également nous assurer que le premier paramètre que nous transmettons à la fonction strpos() n'est pas une chaîne vide. Pour cela, nous pouvons utiliser la fonction intégrée PHP empty() pour vérifier si la chaîne est vide. Par exemple, le code suivant vérifiera si la variable $haystack est vide :

if (empty($haystack)) {
    // 如果 $haystack 是空字符串,那么输出错误
    echo "第一个参数不可为空";
}

Si le premier paramètre que nous avons passé à la fonction est bien une chaîne vide, alors nous n'avons pas besoin de vérifier le deuxième paramètre, car peu importe Il n'existe aucun moyen de trouver une sous-chaîne dans une chaîne vide.

3.3 Utilisation de la valeur de retour de strpos()

Enfin, nous pouvons également déterminer si notre appel de fonction réussit en vérifiant la valeur de retour de la fonction strpos(). Lorsque la fonction strpos() trouve la sous-chaîne spécifiée, elle renvoie l'index de la sous-chaîne dans la chaîne principale (en comptant à partir de 0), sinon la fonction renvoie false. Par conséquent, nous pouvons utiliser l'opérateur de comparaison stricte de PHP (===) pour vérifier si la valeur de retour de la fonction strpos() est un booléen faux. Par exemple, le code suivant vérifiera si la fonction strpos() est exécutée avec succès :

$pos = strpos($haystack, $needle);

if ($pos === false) {
    // 如果 strpos() 函数返回 false,那么输出错误
    echo "无法在主字符串中找到子字符串";
}

En développement réel, nous pouvons choisir une ou plusieurs de ces solutions en fonction de la situation spécifique.

Résumé

Dans cet article, nous avons discuté du message d'erreur PHP Avertissement : argument non valide fourni pour strpos() et proposé diverses solutions. Si vous rencontrez cette erreur lors de l'utilisation de la fonction strpos(), vous pouvez suivre les méthodes décrites dans cet article pour résoudre le problème. Chaque fois que nous rencontrons une erreur PHP, nous devons vérifier soigneusement le code et suivre quelques règles de programmation de base pour garantir l'exactitude et la robustesse du code.

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:
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