Req #51335 [NEW]: Search first substring from list

From: Date: Sat, 20 Mar 2010 10:45:59 +0000
Subject: Req #51335 [NEW]: Search first substring from list
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-148783@lists.php.net to get a copy of this message
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



Thread (5 messages)

« previous php.bugs (#148783) next »