PHP Doku:: Durchsucht einen String nach einem Zeichen aus einer Gruppe von Zeichen - function.strpbrk.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzTextverarbeitungZeichenkettenString-Funktionenstrpbrk

Ein Service von Reinhard Neidl - Webprogrammierung.

String-Funktionen

<<strncmp

strpos>>

strpbrk

(PHP 5)

strpbrkDurchsucht einen String nach einem Zeichen aus einer Gruppe von Zeichen

Beschreibung

string strpbrk ( string $haystack , string $char_list )

strpbrk() durchsucht den String haystack nach dem ersten Vorkommen eines Zeichens aus char_list.

Parameter-Liste

haystack

Die Zeichenkette, in der char_list gesucht werden soll.

char_list

Dieser Parameter berücksichtigt Groß- und Kleinschreibung.

Rückgabewerte

Gibt den Rest des Strings, beginnend bei der ersten Fundstelle, zurück; falls kein Zeichen gefunden wird jedoch FALSE.

Beispiele

Beispiel #1 strpbrk()-Beispiel

<?php

$text 
'Dies ist ein einfacher Text.';

// Gibt "ies ist ein einfacher Text." aus, da 'i' als erstes gefunden wird
echo strpbrk($text'ti');

// Gibt "Text." aus, da Groß- und Kleinschreibung berücksichtigt wird
echo strpbrk($text'T');
?>


6 BenutzerBeiträge:
- Beiträge aktualisieren...
root at mantoru dot de
7.02.2008 16:55
A simpler (and slightly faster) strpbrkpos function:

<?php
function strpbrkpos($haystack, $char_list) {
   
$result = strcspn($haystack, $char_list);
    if (
$result != strlen($haystack)) {
        return
$result;
    }
    return
false;
}
?>
pzb at novell dot com
29.07.2007 1:09
One undocumented requirement:
If $char_list contains null characters ("\0"), only characters before the null will be used.  While PHP handles nulls in strings just fine, the data is passed to a function that is not null safe.
Evan
4.07.2007 5:33
If you're not looking to duplicate the rest of the string, but instead just want the offset, in the spirit of the str*pos() functions:

<?php

function strpbrkpos($s, $accept) {
 
$r = FALSE;
 
$t = 0;
 
$i = 0;
 
$accept_l = strlen($accept);

  for ( ;
$i < $accept_l ; $i++ )
    if ( (
$t = strpos($s, $accept{$i})) !== FALSE )
      if ( (
$r === FALSE) || ($t < $r) )
       
$r = $t;

  return
$v;
}

?>
user at example dot net
3.07.2007 21:25
For PHP versions before 5:

<?php

   
function strpbrk( $haystack, $char_list )
    {
       
$strlen = strlen($char_list);
       
$found = false;
        for(
$i=0; $i<$strlen; $i++ ) {
            if( (
$tmp = strpos($haystack, $char_list{$i})) !== false ) {
                if( !
$found ) {
                   
$pos = $tmp;
                   
$found = true;
                    continue;
                }
               
$pos = min($pos, $tmp);
            }
        }
        if( !
$found ) {
            return
false;
        }
        return
substr($haystack, $pos);
    }

?>

Sadly this is about ten times slower than the native implementation.
jamie dot mcardle at stpetersgv dot org
7.06.2007 23:54
I wanted to use this function to look for an @ in a db entry - didn't work because I don't have this version of PHP yet, but I thought I had my issue licked. Darn it.
aidan at php dot net
21.08.2004 10:11
This functionality is now implemented in the PEAR package PHP_Compat.

More information about using this function without upgrading your version of PHP can be found on the below link:

http://pear.php.net/package/PHP_Compat



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",...)