PHP Doku:: Wie strstr, aber unabhängig von Groß- bzw. Kleinschreibung - function.stristr.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzTextverarbeitungZeichenkettenString-Funktionenstristr

Ein Service von Reinhard Neidl - Webprogrammierung.

String-Funktionen

<<stripslashes

strlen>>

stristr

(PHP 4, PHP 5)

stristrWie strstr(), aber unabhängig von Groß- bzw. Kleinschreibung

Beschreibung

string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

Gibt den String haystack ab dem ersten Vorkommen von needle bis zum Ende zurück.

Parameter-Liste

haystack

Die Zeichenkette, in der gesucht werden soll.

needle

Ist needle kein String, wird der Parameter in einen Integerwert konvertiert, der dem Ordinalwert des Zeichens entspricht.

before_needle

Wenn der Wert auf TRUE gesetzt ist, gibt stristr() den Teil von haystack vor dem ersten Auftreten von needle zurück.

needle und haystack werden ohne Rücksicht auf Groß- oder Kleinschreibung untersucht.

Rückgabewerte

Gibt den gefundenen Teilstring zurück. Wenn needle nicht gefunden wurde, gibt die Funktion FALSE zurück.

Changelog

Version Beschreibung
5.3.0 Der optionale Parameter before_needle wurde hinzugefügt.
4.3.0 stristr() ist jetzt Binary safe.

Beispiele

Beispiel #1 stristr()-Beispiel

<?php
  $email 
'USER@EXAMPLE.com';
  echo 
stristr($email'e');       // Ausgabe: ER@EXAMPLE.com
  
echo stristr($email'e'true); // Ab PHP 5.3.0, Ausgabe: US
?>

Beispiel #2 Prüfen, ob ein String gefunden wurde oder nicht

<?php
  $string 
'Hallo Welt!';
  if(
stristr($string'Erde') === FALSE) {
    echo 
'"Erde" nicht gefunden';
  }
// Ausgabe: "Erde" nicht gefunden
?>

Beispiel #3 Verwendung eines Wertes, der kein String ist

<?php
  $string 
'APFEL';
  echo 
stristr($string97); // 97 = kleines a
// Ausgabe: APFEL
?>

Anmerkungen

Hinweis: Diese Funktion ist binary safe.

Siehe auch

  • strstr() - Findet das erste Vorkommen eines Strings
  • strrchr() - Sucht das letzte Vorkommen eines Zeichens in einem String
  • substr() - Gibt einen Teil eines Strings zurück
  • preg_match() - Führt eine Suche mit einem regulären Ausdruck durch


10 BenutzerBeiträge:
- Beiträge aktualisieren...
jahforlove at gmail dot com
16.10.2010 7:58
Use it to emulate the before_needle php V5.3 :

<?php
//$h = haystack, $n = needle
if($pos=stripos($h,$n)) $string=substr($h,0,$pos);
?>
andy
8.03.2010 18:44
Quick way to use this with an array for a needle:

<?php
$arr
= array('search_term1','search_term2','search_term3');

foreach(
$arr as $key => $search_needle) {

   if(
stristr($haystack, $search_needle) != FALSE) {
        echo
'execute this code if found';
   }

}
?>
carel at ckbt dot org
13.05.2009 17:18
if stristr($message,'viagra')
or stristr($message,'cialis')
)
{
die();
}

Works quite well in any Shoutbox, Forum, Guestbook, Mailform, etcetera.

Just enter between the definitions and sending the message to the DB, et voila. ^_^
tomas dot nesrovnal at yourspirit dot cz
18.12.2008 21:36
Active item item in menu:

<?php
function aim($page) {
    if(
stristr($_SERVER['REQUEST_URI'], $page)) {
        return
' class="active"';
    }
}
?>

usage:

<style type="text/css">
.active {color: red;}
</style>

<?php
print '<a href="http://example.com/page/hello-world/"'. aim('hello-world') .'>HW</a>';
?>
giz at gbdesign dot net
6.10.2007 14:02
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
}
?>
art at awilton dot dotcom
7.11.2005 18:17
handy little bit of code I wrote to take arguments from the command line and parse them for use in my apps.

<?php

 $i
= implode(" ",$argv); //implode all the settings sent via clie
 
$e = explode("-",$i); // no lets explode it using our defined seperator '-'

       //now lets parse the array and return the parameter name and its setting
       // since the input is being sent by the user via the command line
       //we will use stristr since we don't care about case sensitivity and
       //will convert them as needed later.

   
while (list($index,$value) = each($e)){

      
//lets grap the parameter name first using a double reverse string
       // to get the begining of the string in the array then reverse it again
       // to set it back. we will also "trim" off the "=" sign

    
$param = rtrim(strrev(stristr(strrev($value),'=')),"=");

      
//now lets get what the parameter is set to.
       // again "trimming" off the = sign

    
$setting = ltrim(stristr($value,'='),"=");

      
// now do something with our results.
       // let's just echo them out so we can see that everything is working

     
echo "Array index is ".$index." and value is ".$value."\r\n";
      echo
"Parameter is ".$param." and is set to ".$setting."\r\n\r\n";

}

?>

when run from the CLI this script returns the following.

[root@fedora4 ~]# php a.php -val1=one -val2=two -val3=three

Array index is 0 and value is a.php
Parameter is  and is set to

Array index is 1 and value is val1=one
Parameter is val1 and is set to one

Array index is 2 and value is val2=two
Parameter is val2 and is set to two

Array index is 3 and value is val3=three
Parameter is val3 and is set to three

[root@fedora4 ~]#
triadsebas at triads dot buildtolearn dot net
21.07.2005 14:39
You can use strstr() or stristr() to validate data!
Check this out:
<?php
function validate_email($input) {
  if (!
stristr($input, '@')) {
    return
false;
  }
  return
true;
}

function
validate_url($input) {
  if (!
stristr($input, 'http://')) {
    return
false;
  }
  return
true;
}
?>
Simple example:
<?php
if (!validate_email($_POST['email'])) {
  print
'You did not enter a valid email adress';
}
if (!
validate_url($_POST['url'])) {
  print
'You did not enter a valid url.';
}
?>
notepad at codewalkers dot com
5.06.2005 10:02
<?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

?>
Techdeck at Techdeck dot org
12.11.2002 21:26
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".
dpatton.at.confluence.org
3.10.2002 6:36
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



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)