From:             
Operating system: 
PHP version:      Irrelevant
Package:          Strings related
Bug Type:         Feature/Change Request
Bug description:Search first substring from list

Description:
------------
If we want to search first substrings from list, we should make multiple
calls to strpos() for each substring. Using PCRE will slowdown performance.
So, we need some new function like:



  int strpos_array(string $haystack, array $needles, string &$found [, int
$offset = 0 ])



which will accept array of substrings in $needle, search first position of
them. If nothing found then returns FALSE. If found any substring then
assign it to $found and return its position.



The function name is not important. Other functions for case-insensitive
search and/or for reverse search (stripos_array, strrpos_array,
strripos_array) also useful.



Extending function strpos() to accept array in $needle is not good due to
&$found parameter.



Good example of using such function is writing parser of some data like SQL
dump. Performance of the function should be higher then PCRE.

Test script:
---------------
$string = 'foo;bar::baz-qwe';

$search = array('-', ';', '::');

$pos = strpos_array($string, $search, $found, 5);

if ($pos === false) {

    echo "Nothing found";

}

else {

    echo "Found '$found' at $pos";

}

Expected result:
----------------
Found '::' at 7


-- 
Edit bug report at http://bugs.php.net/bug.php?id=51335&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=51335&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=51335&r=trysnapshot53
Try a snapshot (PHP 6.0):            
http://bugs.php.net/fix.php?id=51335&r=trysnapshot60
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=51335&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=51335&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=51335&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=51335&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=51335&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=51335&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=51335&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=51335&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=51335&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=51335&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=51335&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=51335&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=51335&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=51335&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=51335&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=51335&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=51335&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=51335&r=mysqlcfg

Reply via email to