search for in the  
<sscanfstr_pad>
Last updated: Thu, 19 May 2005

str_ireplace

(PHP 5)

str_ireplace --  Case-insensitive version of str_replace().

Description

mixed str_ireplace ( mixed search, mixed replace, mixed subject [, int &count] )

This function returns a string or an array with all occurrences of search in subject (ignoring case) replaced with the given replace value. If you don't need fancy replacing rules, you should generally use this function instead of eregi_replace() or preg_replace() with the i modifier.

If subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well.

If search and replace are arrays, then str_ireplace() takes a value from each array and uses them to do search and replace on subject. If replace has fewer values than search, then an empty string is used for the rest of replacement values. If search is an array and replace is a string; then this replacement string is used for every value of search.

Example 1. str_ireplace() example

<?php
$bodytag
= str_ireplace("%body%", "black", "<body text=%BODY%>");
?>

This function is binary safe.

Note: As of PHP 5.0.0 the number of matched and replaced needles will be returned in count which is passed by reference. Prior to PHP 5.0.0 this parameter is not available.

See also: str_replace(), ereg_replace(), preg_replace(), and strtr().



User Contributed Notes
str_ireplace
php programmer at work
27-Apr-2005 05:53
One more correction to the str_Ireplace function below: the strpos output should be compared against false, otherwise needles in the beginning of haystacks will not be replaced:

function str_Ireplace($needle, $replacement, $haystack) {
   $i = 0;
   while (($pos = strpos(strtolower($haystack),
     strtolower($needle), $i)) !== false) {
       $haystack = substr($haystack, 0, $pos) . $replacement
           . substr($haystack, $pos + strlen($needle));
       $i = $pos + strlen($replacement);
   }
   return $haystack;
}
php programmer at work
27-Apr-2005 05:42
For Kosta's str_Ireplace function, I think you'll want to lowercase the needle as well as the haystack in the strpos function, ie:

while ($pos = strpos(strtolower($haystack), $strtolower($needle), $i)) {
   ...
}

In its current form, it only works as expected if the needle is always provided lowercase.
Andrew Cassidy andee at bytz co uk
18-Apr-2005 02:35
Here is another str_ireplace for PHP4 that accepts arrays as input variables. I also found it easier to follow than the previously mentioned one, which is probably more efficient thatn this method:

<?php
function str_Ireplace($search, $replace, $subject) {
  if (
is_array($search)) {
   foreach (
$search as $word) {
  
$words[] = "/".$word."/i";
   }
  }
  else {
  
$words = "/".$search."/i";
  }
  return
preg_replace($words, $replace, $subject);
}
?>
kosta dot krauth at zg dot htnet dot hr
12-Apr-2005 01:11
Here's a case insensitive str_replace function for those that don't have PHP5 installed:

<?php
function str_Ireplace($Needle, $Replacement, $Haystack){
  
$i = 0;
   while(
$Pos = strpos(strtolower($Haystack), $Needle, $i)){
      
$Haystack = substr($Haystack, 0, $Pos).$Replacement.substr($Haystack, $Pos+strlen($Needle));
      
$i = $Pos+strlen($Replacement);
   }
   return
$Haystack;
}
?>
daevid at daevid dot com
05-Apr-2005 07:41
modify my function to include these other preg_replaces...

//highlight strings between quote marks
$query = preg_replace("/['\"]([^'\"]*)['\"]/i", "'<FONT COLOR='#FF6600'>$1</FONT>'", $query, -1);

//highlight numbers
$query = preg_replace("/(\d+)/", "<FONT COLOR='#FF6600'>$1</FONT>", $query, -1);

//highlight functions
$query = preg_replace("/(\w+)\s?\(/", "<FONT COLOR='#CC00FF'>$1</FONT>(", $query, -1);

//highlight tables/databases
$query = preg_replace("/(\w+)\./", "<U>$1</U>.", $query, -1);
daevid at daevid dot com
05-Apr-2005 03:14
here's a neat little function I whipped up to do HTML color coding of SQL strings.

/**
* Output the HTML debugging string in color coded glory for a sql query
* This is very nice for being able to see many SQL queries
* @access    public
* @return    void. prints HTML color coded string of the input $query.
* @param    string $query The SQL query to be executed.
* @author    Daevid Vincent [daevid@LockdownNetworks.com]
* @version    1.0
* @date        04/05/05
* @todo    highlight SQL functions.
*/
function SQL_DEBUG( $query )
{
   if( $query == '' ) return 0;

   global $SQL_INT;
   if( !isset($SQL_INT) ) $SQL_INT = 0;

   //[dv] this has to come first or you will have goofy results later.
   $query = preg_replace("/['\"]([^'\"]*)['\"]/i", "'<FONT COLOR='#FF6600'>$1</FONT>'", $query, -1);

   $query = str_ireplace(
                           array (
                                   '*',
                                   'SELECT ',
                                   'UPDATE ',
                                   'DELETE ',
                                   'INSERT ',
                                   'INTO',
                                   'VALUES',
                                   'FROM',
                                   'LEFT',
                                   'JOIN',
                                   'WHERE',
                                   'LIMIT',
                                   'ORDER BY',
                                   'AND',
                                   'OR ', //[dv] note the space. otherwise you match to 'COLOR' ;-)
                                   'DESC',
                                   'ASC',
                                   'ON '
                                 ),
                           array (
                                   "<FONT COLOR='#FF6600'><B>*</B></FONT>",
                                   "<FONT COLOR='#00AA00'><B>SELECT</B> </FONT>",
                                   "<FONT COLOR='#00AA00'><B>UPDATE</B> </FONT>",
                                   "<FONT COLOR='#00AA00'><B>DELETE</B> </FONT>",
                                   "<FONT COLOR='#00AA00'><B>INSERT</B> </FONT>",
                                   "<FONT COLOR='#00AA00'><B>INTO</B></FONT>",
                                   "<FONT COLOR='#00AA00'><B>VALUES</B></FONT>",
                                   "<FONT COLOR='#00AA00'><B>FROM</B></FONT>",
                                   "<FONT COLOR='#00CC00'><B>LEFT</B></FONT>",
                                   "<FONT COLOR='#00CC00'><B>JOIN</B></FONT>",
                                   "<FONT COLOR='#00AA00'><B>WHERE</B></FONT>",
                                   "<FONT COLOR='#AA0000'><B>LIMIT</B></FONT>",
                                   "<FONT COLOR='#00AA00'><B>ORDER BY</B></FONT>",
                                   "<FONT COLOR='#0000AA'><B>AND</B></FONT>",
                                   "<FONT COLOR='#0000AA'><B>OR</B> </FONT>",
                                   "<FONT COLOR='#0000AA'><B>DESC</B></FONT>",
                                   "<FONT COLOR='#0000AA'><B>ASC</B></FONT>",
                                   "<FONT COLOR='#00DD00'><B>ON</B> </FONT>"
                                 ),
                           $query
                         );

   echo "<FONT COLOR='#0000FF'><B>SQL[".$SQL_INT."]:</B> ".$query."<FONT COLOR='#FF0000'>;</FONT></FONT><BR>\n";

   $SQL_INT++;

} //SQL_DEBUG
aidan at php dot net
21-Aug-2004 02:58
If you want to do string highlighting, for example highlighting search terms, try str_highlight().

http://aidan.dotgeek.org/lib/?file=function.str_highlight.php
aidan at php dot net
30-May-2004 12:36
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

<sscanfstr_pad>
 Last updated: Thu, 19 May 2005
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: The Server Pages
Last updated: Thu May 19 17:35:34 2005 CDT