PHP 8.4.0 RC3 available for testing

stristr

(PHP 4, PHP 5, PHP 7, PHP 8)

stristrVersion insensible à la casse de strstr()

Description

stristr(string $haystack, string $needle, bool $before_needle = false): string|false

Retourne une sous-chaîne de haystack, allant de la première occurrence de needle (incluse) jusqu'à la fin de la chaîne.

Liste de paramètres

haystack

La chaîne dans laquelle on doit chercher.

needle

La chaîne à rechercher.

Antérieur à PHP 8.0.0, si needle n'est pas une chaîne de caractères, elle est convertie en un entier et appliqué en tant que valeur ordinal d'un caractère. Ce comportement est obsolète à partir de PHP 7.3.0, et se fier à celui-ci est fortement déconseillé. En fonction du comportement attendu, needle doit être transtypé explicitement en une chaîne de caractère, ou un appel explicite à chr() doit être exécuté.

before_needle

Si vaut true, stristr() retourne la partie de haystack avant la première occurrence de needle (needle exclus).

needle et haystack sont traitées sans tenir compte de la casse.

Valeurs de retour

Retourne la partie de la chaîne correspondante. Si needle n'est pas trouvé, la fonction retourne false.

Historique

Version Description
8.2.0 Le case folding ne dépend désormais plus de la locale définit avec setlocale(). Uniquement du case folding ASCII sera effectué. Les octets non-ASCII seront comparés par leur valeur d'octet.
8.0.0 needle accepte désormais une chaîne vide.
8.0.0 Passing an entier as needle is no longer supported.
7.3.0 Passer un entier comme before_needle a été rendu obsolète.

Exemples

Exemple #1 Exemple avec stristr()

<?php
$email
= 'USER@EXAMPLE.com';
echo
stristr($email, 'e'); // Affiche ER@EXAMPLE.com
echo stristr($email, 'e', true); // Affiche US
?>

Exemple #2 Teste si une chaîne de caractères est trouvée ou pas

<?php
$string
= 'Hello World!';
if(
stristr($string, 'terre') === FALSE) {
echo
'"terre" non trouvé dans la chaîne de caractères';
}
// affiche : "terre" non trouvé dans la chaîne de caractères
?>

Exemple #3 Utilisation d'une "chaîne de caractères" en chiffre

<?php
$string
= 'POMME';
echo
stristr($string, 112); // 112 = p minuscule
// Affiche : POMME
?>

Notes

Note: Cette fonction gère les chaînes binaires.

Voir aussi

  • strstr() - Trouve la première occurrence dans une chaîne
  • strrchr() - Trouve la dernière occurrence d'un caractère dans une chaîne
  • stripos() - Recherche la position de la première occurrence dans une chaîne, sans tenir compte de la casse
  • strpbrk() - Recherche un ensemble de caractères dans une chaîne de caractères
  • preg_match() - Effectue une recherche de correspondance avec une expression rationnelle standard

add a note

User Contributed Notes 5 notes

up
17
dpatton.at.confluence.org
22 years ago
There was a change in PHP 4.2.3 that can cause a warning message
to be generated when using stristr(), even though no message was
generated in older versions of PHP.

The following will generate a warning message in 4.0.6 and 4.2.3:
stristr("haystack", "");
OR
$needle = ""; stristr("haystack", $needle);

This will _not_ generate an "Empty Delimiter" warning message in
4.0.6, but _will_ in 4.2.3:
unset($needle); stristr("haystack", $needle);

Here's a URL that documents what was changed:
http://groups.google.ca/groups?selm=cvshholzgra1031224321%40cvsserver
up
7
giz at gbdesign dot net
17 years ago
Just been caught out by stristr trying to converting the needle from an Int to an ASCII value.

Got round this by casting the value to a string.

<?php
if( !stristr( $file, (string) $myCustomer->getCustomerID() ) ) {
// Permission denied
}
?>
up
3
Techdeck at Techdeck dot org
21 years ago
An example for the stristr() function:

<?php
$a
= "I like php";
if (
stristr("$a", "LikE PhP")) {
print (
"According to \$a, you like PHP.");
}
?>

It will look in $a for "like php" (NOT case sensetive. though, strstr() is case-sensetive).

For the ones of you who uses linux.. It is similiar to the "grep" command.
Actually.. "grep -i".
up
-1
notepad at codewalkers dot com
19 years ago
<?php

function stristr_reverse($haystack, $needle) {
$pos = stripos($haystack, $needle) + strlen($needle);
return
substr($haystack, 0, $pos);
}
$email = 'USER@EXAMPLE.com';
echo
stristr_reverse($email, 'er');
// outputs USER

?>
up
-3
jukka
10 years ago
I think there is a bug in php 5.3 in stristr with uppercase Ä containing other character

http://pastebin.com/5bP6uztY

if you search only with täry it works, but as soon as the word is tärylä it does not. TÄRYL works fine
To Top