PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

str_pad> <str_getcsv
Last updated: Fri, 09 May 2008

view this page in

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.

Parameters

search

Note: Every replacement with search array is performed on the result of previous replacement.

replace

subject

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.

count

The number of matched and replaced needles will be returned in count which is passed by reference.

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 .

Return Values

Returns a string or an array of replacements.

ChangeLog

Version Description
5.0.0 The count parameter was added.

Examples

Example #1 str_ireplace() example

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

Notes

Note: This function is binary safe.



str_pad> <str_getcsv
Last updated: Fri, 09 May 2008
 
add a note add a note User Contributed Notes
str_ireplace
mvpetrovich
15-Feb-2008 08:28
Here are some minor tweaks to-n00b-at-battleofthebits-dot-org's excellent function.
1) The token was set to an ASCII value 1 (which could be changed as was previously noted)
2) The $c++ was not needed
3) The while statement is not necessary for the final replacement
4) Note that this does not allow use of arrays for search and replace terms.  That could be implemented using loops.

<?php
if(!function_exists('str_ireplace')){
  function
str_ireplace($search,$replace,$subject){
   
$token = chr(1);
   
$haystack = strtolower($subject);
   
$needle = strtolower($search);
    while ((
$pos=strpos($haystack,$needle))!==FALSE){
     
$subject = substr_replace($subject,$token,$pos,strlen($search));
     
$haystack = substr_replace($haystack,$token,$pos,strlen($search));
    }
   
$subject = str_replace($token,$replace,$subject);
    return
$subject;
  }
}
?>
n00b at battleofthebits dot org
21-Jul-2007 03:54
Dreamhost hasn't upgraded to PHP 5.0 -- I came up with my own alternative, trying to make it run as much like str_ireplace() as possible.  Adjust the switch-a-roo token if you think it may conflict with your needle in teh haystack.

## HOMEBREW str_ireplace() FOR PRE-PHP 5.0
if (!function_exists('str_ireplace')  {
  function str_ireplace($search,$replace,$subject) {
    $token = '^[[term^]';
    $haystack = strtolower($subject);
    $needle = strtolower($search);
    while (($pos=strpos($haystack,$needle))!==FALSE)  {
      $c++;
      $subject = substr_replace($subject,$token,$pos,strlen($search));
      $haystack = substr_replace($haystack,$token,$pos,strlen($search));
    }
    while (($pos=strpos($subject,$token))!==FALSE)  {
      $subject = substr_replace($subject,$replace,$pos,strlen($token));
    }
    return $subject;
  }
}
lev at taintedthoughts dot com
12-Jun-2007 12:03
There appears to be a "bug" with this function in at least version 5.2.1.

If you attempt to use the function while replacing special characters, such as new lines, it will cause your entire scripts to fail. It resulted in my browser (Firefox 2) trying to download the file instead of parsing it.

Here is example code which will cause problems:

<?php

$sometext
= "this is some text\n";
$sometext .= "that has a new line in it";

echo
break_lines($sometext);

function
break_lines ($text)
 {
 return
str_ireplace("\n", "<br/>", $text);
 }

?>

However, if you simply get rid of the "i" and use the normal str_replace, the page will load just fine.

I have also tried the same code on 5.2.3 and this version does NOT have the same problem, so it does appear to be an issue that was resolved with the newest builds of php.

I don't think it was a result of my personal environment, but I am running Debian-Sarge, Apache 2 and PHP 5.2.1/5.2.3.
hans111 at yahoo dot com
30-Jan-2007 09:26
Yet another one str_ireplace ireplacement, this one will take arrays as $search and $replace

<?php
function make_pattern(&$pat, $key) {
  
$pat = '/'.preg_quote($pat, '/').'/i';
}
if(!
function_exists('str_ireplace')){
    function
str_ireplace($search, $replace, $subject){
        if(
is_array($search)){
           
array_walk($search, 'make_pattern');
        }
        else{
           
$search = '/'.preg_quote($search, '/').'/i';
        }
        return
preg_replace($search, $replace, $subject);
    }
}
?>
René Johnson
05-Nov-2006 05:37
str_ireplace for php below version 5. :)

if(!function_exists('str_ireplace')) {
function str_ireplace($search,$replace,$subject) {
$search = preg_quote($search, "/");
return preg_replace("/".$search."/i", $replace, $subject); } }
hans111
02-Aug-2006 05:25
<?php
if(!function_exists('str_ireplace')) {
    function
str_ireplace($search, $replacement, $string){
       
$delimiters = array(1,2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,
       
26,27,28,29,30,31,33,247,215,191,190,189,188,187,186,
       
185,184,183,182,180,177,176,175,174,173,172,171,169,
       
168,167,166,165,164,163,162,161,157,155,153,152,151,
       
150,149,148,147,146,145,144,143,141,139,137,136,135,
       
134,133,132,130,129,128,127,126,125,124,123,96,95,94,
       
63,62,61,60,59,58,47,46,45,44,38,37,36,35,34);
        foreach (
$delimiters as $d) {
            if (
strpos($string, chr($d))===false){
               
$delimiter = chr($d);
                break;
            }
        }
        if (!empty(
$delimiter)) {
            return
preg_replace($delimiter.quotemeta($search).$delimiter.'i', $replacement, $string);
        }
        else { 
           
trigger_error('Homemade str_ireplace could not find a proper delimiter.', E_USER_ERROR);
        }
    }
}
?>
hfuecks at nospam dot org
04-Jul-2005 06:07
Note that character case is being defined by your server's locale setting, which effects strings containing non-ASCII characters.

See strtolower() - http://www.php.net/strtolower and comments - internally str_ireplace converts $search and $replace to lowercase to find matches.
daevid at daevid dot com
05-Apr-2005 05:14
here's a neat little function I whipped up to do HTML color coding of SQL strings.

<?php
/**
 * 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 04:58
If you want to do string highlighting, for example highlighting search terms, try str_highlight().

http://aidanlister.com/repos/v/function.str_highlight.php
aidan at php dot net
30-May-2004 02: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

str_pad> <str_getcsv
Last updated: Fri, 09 May 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites