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

search for in the

str_pad> <str_getcsv
Last updated: Fri, 14 Aug 2009

view this page in

str_ireplace

(PHP 5)

str_ireplaceVersion insensible à la casse de str_replace()

Description

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

str_ireplace() retourne une chaîne de caractères ou un tableau dont toutes les occurrences de search dans subject (en ignorant la casse), ont été remplacées par la valeur de replace . Si vous n'avez pas besoin de règles de recherche complexes, il est recommandé d'utiliser cette fonction à la place de preg_replace() avec l'option i.

Liste de paramètres

search

Note: Chaque remplacement avec le tableau search est effectué sur le résultat du dernier remplacement.

replace

subject

Si subject est un tableau, le remplacement est effectué sur chacun des éléments du sujet subject , et la valeur retournée est un aussi un tableau.

count

Le nombre de remplacement sera retourné dans le paramètre count , passé par référence.

Si search et replace sont des tableaux, alors str_replace() prendra une valeur de chaque tableau, et l'utilisera pour faire le remplacement dans subject . Si replace a moins de valeurs que search , alors une chaîne vide sera utilisée pour effectuer les remplacements. Si search est un tableau et que replace est une chaîne, alors la chaîne de remplacement sera utilisée pour chaque élément de search .

Valeurs de retour

Retourne une chaîne ou un tableau de remplacement.

Historique

Version Description
5.0.0 Ajout du paramètre count .

Exemples

Exemple #1 Exemple avec str_ireplace()

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

Notes

Note: Cette fonction gère les chaînes binaires.

Voir aussi

  • str_replace() - Remplace toutes les occurrences dans une chaîne
  • preg_replace() - Rechercher et remplacer par expression rationnelle standard
  • strtr() - Remplace des caractères dans une chaîne



str_pad> <str_getcsv
Last updated: Fri, 14 Aug 2009
 
add a note add a note User Contributed Notes
str_ireplace
info at daniel-marschall dot de
22-Jun-2009 02:15
If you want to keep the original capitalization when replacing some text (e.g. for highlighting the search-string in the the search result), you can use this code I wrote:

<?php

// http://devboard.viathinksoft.de/viewtopic.php?f=34&t=771
// Bugfix-Release #3 (June, 22th 2009)
function ext_str_ireplace($findme, $replacewith, $subject)
{
    
// Replaces $findme in $subject with $replacewith
     // Ignores the case and do keep the original capitalization by using $1 in $replacewith
     // Required: PHP 5

    
$rest = $subject;
    
$result = '';

     while (
stripos($rest, $findme) !== false) {
         
$pos = stripos($rest, $findme);

         
// Remove the wanted string from $rest and append it to $result
         
$result .= substr($rest, 0, $pos);
         
$rest = substr($rest, $pos, strlen($rest)-$pos);

         
// Remove the wanted string from $rest and place it correctly into $result
         
$result .= str_replace('$1', substr($rest, 0, strlen($findme)), $replacewith);
         
$rest = substr($rest, strlen($findme), strlen($rest)-strlen($findme));
     }

    
// After the last match, append the rest
    
$result .= $rest;

     return
$result;
}

?>
ishutko at gmail dot com
16-Mar-2009 09:49
For function work with cirilic

setlocale (LC_ALL, 'ru_RU');
sawdust
04-Dec-2008 03:28
Here's a different approach to search result keyword highlighting that will match all keyword sub strings in a case insensitive manner and preserve case in the returned text. This solution first grabs all matches within $haystack in a case insensitive manner, and the secondly loops through each of those matched sub strings and applies a case sensitive replace in $haystack. This way each unique (in terms of case) instance of $needle is operated on individually allowing a case sensitive replace to be done in order to preserve the original case of each unique instance of $needle.

<?php
function highlightStr($haystack, $needle, $highlightColorValue) {
    
// return $haystack if there is no highlight color or strings given, nothing to do.
   
if (strlen($highlightColorValue) < 1 || strlen($haystack) < 1 || strlen($needle) < 1) {
        return
$haystack;
    }
   
preg_match_all("/$needle+/i", $haystack, $matches);
    if (
is_array($matches[0]) && count($matches[0]) >= 1) {
        foreach (
$matches[0] as $match) {
           
$haystack = str_replace($match, '<span style="background-color:'.$highlightColorValue.';">'.$match.'</span>', $haystack);
        }
    }
    return
$haystack;
}
?>
Michael dot Bond at mail dot wvu dot edu
14-Nov-2008 02:44
This function will highlight search terms (Key Words in Context).

The difference between this one and the ones below is that it will preserve the original case of the search term as well. So, if you search for "american" but in the original string it is "American" it will retain the capital "A" as well as the correct case for the rest of the string.

<?php
function kwic($str1,$str2) {
   
   
$kwicLen = strlen($str1);

   
$kwicArray = array();
   
$pos          = 0;
   
$count       = 0;

    while(
$pos !== FALSE) {
       
$pos = stripos($str2,$str1,$pos);
        if(
$pos !== FALSE) {
           
$kwicArray[$count]['kwic'] = substr($str2,$pos,$kwicLen);
           
$kwicArray[$count++]['pos']  = $pos;
           
$pos++;
        }
    }

    for(
$I=count($kwicArray)-1;$I>=0;$I--) {
       
$kwic = '<span class="kwic">'.$kwicArray[$I]['kwic'].'</span>';
       
$str2 = substr_replace($str2,$kwic,$kwicArray[$I]['pos'],$kwicLen);
    }
       
    return(
$str2);
}
?>
info at daniel-marschall dot de
02-Oct-2008 05:32
Example for str_ireplace(). It will print "RePlaCeMe" in red color, but after this, it would be written in lower case because of the string $search.

<?php

$search 
= 'replaceme';
$replace = '<font color="#FF0000">'.$search.'</font>';
$text    = 'Please RePlaCeMe, OK?';

echo
str_ireplace($search, $replace, $text);

?>

Example for ext_str_ireplace(). It will print "RePlaCeMe" in red color, and will not change the capitalization:

<?php

$search 
= 'replaceme';
$replace = '<font color="#FF0000">$1</font>';
$text    = 'Please RePlaCeMe, OK?';

echo
ext_str_ireplace($search, $replace, $text);

?>
Anonymous
05-Jun-2008 07:58
I modified a script from notes on the eregi_replace() function page.  This is a highlight script that worked good for me.

$text - is the text to search
$words - are the words to highlight (search text)
$the_place - is so that you can tell your users what "area" was searched.

<?php
function highlight_this($text, $words, $the_place) {
   
$words = trim($words);
   
$wordsArray = explode(' ', $words);
    foreach(
$wordsArray as $word) {
        if(
strlen(trim($word)) != 0)
           
$text = str_ireplace($word, "<span class=\"highlight\">".strtoupper($word)."</span>", $text, $count);
    }
   
//added to show how many keywords were found
   
echo "<br><div class=\"emphasis\">A search for <strong>" . $words. "</strong> found <strong>" . $count . "</strong> matches within the " . $the_place. ".</div><br>";
   
   
//end script modification
   
return $text;
}
?>
mvpetrovich
15-Feb-2008 11: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;
  }
}
?>
hfuecks at nospam dot org
04-Jul-2005 09: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 08: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 07: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 05: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, 14 Aug 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites