(PHP 4, PHP 5, PHP 7, PHP 8)
stristr — Versión insensible a mayúsculas y minúsculas de strstr()
Devuelve una subcadena de haystack,
desde la primera ocurrencia de needle
(incluida) hasta el final de la cadena.
haystackLa cadena en la que se debe buscar.
needleLa cadena a buscar.
Anterior a PHP 8.0.0, sineedle no es una cadena de caracteres, se
convierte en un entero y se aplica como valor ordinal de un
carácter. Este comportamiento está obsoleto a partir de PHP 7.3.0, y confiar en él
está fuertemente desaconsejado. Dependiendo del comportamiento esperado,
needle debe ser explícitamente convertido a una cadena de caracteres,
o debe realizarse una llamada explícita a chr() .
before_needle
Si es true , stristr()
devuelve la parte de haystack antes de la primera
ocurrencia de needle (needle
excluida).
needle y haystack
se tratan sin tener en cuenta mayúsculas y minúsculas.
Devuelve la parte correspondiente de la cadena. Si
needle no se encuentra, la función
devuelve false .
| Versión | Descripción |
|---|---|
| 8.2.0 | El case folding ya no depende de la configuración local definida con setlocale() . Solo se realizará el case folding ASCII. Los octetos no-ASCII serán comparados por su valor de octeto. |
| 8.0.0 |
needle acepta ahora una cadena vacía.
|
| 8.0.0 |
Pasar un int como needle ya no está soportado.
|
| 7.3.0 |
Pasar un int como before_needle se ha
marcado como obsoleto.
|
Ejemplo #1 Ejemplo con stristr()
<?php
$email = 'USER@EXAMPLE.com';
echo stristr($email, 'e'), PHP_EOL; // muestra ER@EXAMPLE.com
echo stristr($email, 'e', true), PHP_EOL; // muestra US
?>
Ejemplo #2 Comprueba si una cadena es encontrada o no
<?php
$string = 'Hello World!';
if (stristr($string, 'earth') === FALSE) {
echo '"terre" no encontrado en la cadena';
}
// muestra: "terre" no encontrado en la cadena
?>Nota: Esta función es segura para sistemas binarios.
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 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
}
?>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".<?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
?>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