web-dev-qa-db-fra.com

PHP - Comment vérifier si une chaîne contient du texte

<?php
$a = '';

if($a exist 'some text')
    echo 'text';
?>

Supposons que j'ai le code ci-dessus, comment écrire la déclaration "if ($ a exist 'some text')"?

53
Chead

Utilisez la fonction strpos: http://php.net/manual/en/function.strpos.php

$haystack = "foo bar baz";
$needle   = "bar";

if( strpos( $haystack, $needle ) !== false) {
    echo "\"bar\" exists in the haystack variable";
}

Dans ton cas:

if( strpos( $a, 'some text' ) !== false ) echo 'text';

Notez que mon utilisation de l'opérateur !== (au lieu de != false ou == true ou même simplement if( strpos( ... ) ) {) est due à la nature "vérité"/"falsy" de la gestion par PHP de la valeur renvoyée de strpos.

121
Dai

Les chaînes vides sont falsey, vous pouvez donc simplement écrire:

if ($a) {
    echo 'text';
}

Cependant, si vous demandez si une sous-chaîne particulière existe dans cette chaîne, vous pouvez utiliser strpos() pour le faire:

if (strpos($a, 'some text') !== false) {
    echo 'text';
}
12
Blender

http://php.net/manual/en/function.strpos.php Je pense que vous vous demandez si un texte existe dans la chaîne, n'est-ce pas?

if(strpos( $a , 'some text' ) !== false)
3
Leeish

Vous pouvez utiliser strpos() ou stripos() pour vérifier si la chaîne contient l'aiguille donnée. Il retournera la position où il a été trouvé, sinon retournera FALSE.

Utilisez les opérateurs === ou `! == pour différencier FALSE de 0 en PHP.

2
Havenard

Vous pouvez utiliser l'opérateur de comparaison == pour vérifier si la variable est égale au texte:

if( $a == 'some text') {
    ...

Vous pouvez également utiliser la fonction strpos pour renvoyer la première occurrence d'une chaîne:

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}

Voir documentation

1
Kermit

vous pouvez utiliser ce code

$a = '';

if(!empty($a))
  echo 'text';
1
Maneesh Mehta

Si vous avez besoin de savoir si un mot existe dans une chaîne, vous pouvez l'utiliser. Comme il n’est pas clair dans votre question si vous voulez simplement savoir si la variable est une chaîne ou non. Où "Word" est le mot que vous recherchez dans la chaîne.

if (strpos($a,'Word') !== false) {
echo 'true';
}

ou utilisez la méthode is_string. Ce qui retourne vrai ou faux sur la variable donnée.

<?php
$a = '';
is_string($a);
?>
1
Jesse

Voulez-vous vérifier si $ a est une chaîne non vide? Elle contient donc n'importe quel texte? Alors, la suite fonctionnera.

Si $ a contient une chaîne, vous pouvez utiliser les éléments suivants:

if (!empty($a)) {      // Means: if not empty
    ...
}

Si vous devez également confirmer que $ a est en fait une chaîne, utilisez:

if (is_string($a) && !empty($a)) {      // Means: if $a is a string and not empty
    ...
}
0
P44T