PHP: eregi_replace - Manual

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

search for in the

eregi ereg

Last updated: Sat, 27 Jan 2007

view this page in

# eregi_replace

(PHP 3, PHP 4, PHP 5)

eregi_replace -- Replace regular expression case insensitive

## Description

string eregi_replace ( string pattern, string replacement, string string )

This function is identical to ereg_replace() except that this ignores case distinction when matching alphabetic characters.

Пример 1. Highlight search results

`<?php $pattern = '(>[^<]*)('. quotemeta($_GET['search']) .')'; $replacement = '\\1<span class="search">\\2</span>'; $body = eregi_replace($pattern, $replacement, $body); ?>`

See also ereg(), eregi(), and ereg_replace().

add a note User Contributed Notes
eregi_replace
Vladimir Luchaninov
22-Oct-2006 07:38
`If you have plain text e-mails and links but need to make them real links
<?
function replaceLinks($text) {
// convert support@pogoda.in into
// <a href="mailto:support@pogoda.in">
// support@pogoda.in</a>
$text = ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*',
'<a href="mailto:\\0">\\0</a>',$text);
// convert http://www.pogoda.in/new_york/eng/ into
// <a href="http://pogoda.in/new_york/eng/">
// pogoda.in/new_york/eng/</a>
$text = ereg_replace('[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)',
'<a href="\\0">\\1</a>',$text);
// convert www.pogoda.in/new_york/eng/ into
// <a href="http://www.pogoda.in/new_york/eng/">
// www.pogoda.in/new_york/eng/</a>
$text = ereg_replace('(^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*)',
' <a href="http://\\2">\\2</a>',$text);
return $text;
}
?>`
private at sfiac dot net
08-Sep-2006 08:44
`# I was looking to remove all email address and links from post
# for a non-commercial posting website (like forum or classifieds)
# The function
<?PHP
function verify_email_and_link_in_post($c){
# modify email addess and link with this:
$l="LINKS ARE PROHIBITED ON THIS WEBSITE";
$e="EMAIL ADDRESS ARE PROHIBITER ON THIS WEBSITE";
# check for email address
$c=ereg_replace".
"("[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*",".
"$e,$c);
# replace all sign @ with the letters at
$c=ereg_replace".
"("@", " at ",$c);
# check for link HTML input
$c=eregi_replace".
"('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>].*>([^<]*)</a>)',".
"$l,$c);
# check for anythink like http:// or ftp://
$c=ereg_replace".
"("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*",".
"$l,$c);
# check for anyhting starting with www.
$c=ereg_replace".
"("(^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*)",".
"$l,$c);
# finaly check for anything like a-z.a-z
$c=ereg_replace".
"("[-a-z0-9!#$%&\'*+/=?^_`{|}~]+[.]+[-a-z0-9]",".
"$l,$c);
return $c;
}
?>
# hope this help someone ;-)`
carlos at braziland dot com
15-May-2006 05:11
`@bluedragonx at gmail dot com: Now you're calling two functions instead of one. I'm trully curious if that would still be faster.
My original post was just to highlight the need to escape characters that could be used to abuse a contact form. Something everyone should do, especially if doing it for a customer.
But bluedragonx, thanks for your input.`
melissa at melissagirl dot com
14-Apr-2006 09:28
`Here's a nice case-insensitive highlight function that ignores any regular expression characters and highlights a word and leaves it in whatever case it was before:
<?
function highlight($word, $subject) {
$regex_chars = '\.+?(){}[]^$';
for ($i=0; $i<strlen($regex_chars); $i++) {
$char = substr($regex_chars, $i, 1);
$word = str_replace($char, '\\'.$char, $word);
}
$word = '(.*)('.$word.')(.*)';
return eregi_replace($word, '\1<span class="highlight">\2</span>\3', $subject);
}
?>`
02-Nov-2005 03:06
`@bluedragonx: You're right. And i got the order of the params wrong as well, must've been sleepy when i wrote that note. For what it's worth:
<? $_POST['email'] = str_replace("[at]", "@", strtolower($_POST['email'])); ?>
Not similar to Carlos' code though, since it'll convert all characters to lowercase.`
bluedragonx at gmail dot com
16-Oct-2005 04:42
`Actually that wouldn't work because str_replace is case sensitive. So any instances of [AT] [aT] or [At] would be ignored.`
php dot net at nr78 dot net
08-Aug-2005 05:36
`@carlos at braziland dot com: Hate to be a wisecrack, but i believe the following code might be slightly faster with the same result:
<?php
$_POST['email'] = str_replace("@", "[at]", $_POST['email']);
?>`
carlos at braziland dot com
31-Jul-2005 12:54
`So here is my answer to those who are trying to submit headers through my simple contact form:
$any_form_field = eregi_replace("@","[at]",$_POST['just_one_field']); //how can anyone send emails to other email addresses without the @ symbol :)
My suggestion is to do a foreach loop in the $_POST array and remove the @ symbol from all fields (unless you want one of the fields to have the @ symbol, in which case it should be very careful and question if the symbol is necessary).
Not the best solution, but it's simple and it works.`
joltmans at amersel dot com
01-Mar-2005 11:06
`PHP's Regex engine differs from several others in its treatment of parsing spaces.
In many Regex languages '\s' denotes a space.
PHP does not recognize '\s', just type a space ' ' instead.
This simple example illustrates the problem:
<?php
$string = "A sentence with spaces";
if (eregi("with\s*spaces", $string))
{
// Will never print
echo "PHP understood \s";
}
else
{
// Will always print
echo "PHP doesn't understand \s";
}
?>
This example does work:
<?php
$string = "A sentence with spaces";
if (eregi("with *spaces", $string))
{
// Will print
echo "PHP understood ' '";
}
?>`
27-Jan-2005 08:15
`never mind my last post for the eregi_replace not replacing.
I just used str_replace instead and it works fine. I must have had something wrong with my search string. POSIX, Perl.. hmm.. yeah probably something there.
Mettedraq / Gene`
Ausvald
19-Jun-2004 04:21
`Zach Johnson missed up. ereg* funcs use posix regex, not the rfc one`
furiousgreencloud at yahoo dot com
17-Jun-2004 08:47
`To simply convert wild input into a sensable sting, say for a filename I use:
function cleanString($wild) {
return ereg_replace("[^[:alnum:]+]","",$wild);
}
echo cleanString("@#$&*$@#H~e'{}l{}l<o\{}"); // outputs: Hello`
e dot boeters at planet dot nl
03-Jun-2004 04:46
`This is a 'faster' way to highlight search results:
$content = str_replace($query, "<span class=\"highlight\">" . $query . "</span>", $content);`
julien at ratatouille dot com dot fr
24-Nov-2003 06:28
`This function replace < and > symbols between <code> and </code> tags by html code for lower than (&lt;) and greather than (&gt;) elements.
function retourne_format_code($texte)
{
$tablo=split("<code>",$texte);
$texte="";
$texte.=$tablo[0];
foreach($tablo as $cle=>$valeur)
{
if(eregi("</code>",$valeur))
{
$tablo1=split("</code>",$valeur);
$tablo1[0]=eregi_replace("<","&lt;",$tablo1[0]);
$tablo1[0]=eregi_replace(">","&gt;",$tablo1[0]);
foreach($tablo1 as $cle1=>$valeur1)
{
if($cle1==0)
$valeur1="<code>".$valeur1."</code>";
$texte.=$valeur1;
}
}
}
return $texte;
}`
martin_goldmann at gmx dot net
18-Nov-2003 12:43
`After reading the last message I wrote that de-spamizer:
function despamMailURI($myStrMail='')
{
?>javascript:void(location.href='mailto:'+<?=eregi_replace( "^([_\.0-9a-z-]+)@([0-9a-z][0-9a-z-]+)\.([a-z]{2,6})$", "'\\1'+'@'+'\\2'+'.'+'\\3'",$myStrMail)?>)<?
}
Usage example:
<a href="<?=despamMailURI("user@foo.bar")?>">Mail me</a>`
iparanoid at gmx dot de
23-Aug-2003 09:03
`To obtain the an email addresse in the scheme user at host dot use following function
function antispam_mail($mail) {
return eregi_replace( "^([_\.0-9a-z-]+)@([0-9a-z][0-9a-z-]+)\.([a-z]{2,6})$", '\\1 at \\2 dot \\3',$mail );
};
Combined with a wee JavaScript (document.location='mailto:'+user+'@'+host+'.'+tld) this provides a very powerfull anti-spam mechanism while providing full mailto: link functionality.`
chpins-php at romu92 dot freesurf dot fr
02-Jun-2003 04:15
`/*new function for href2text : */
function AHREF2text($string) {
return eregi_replace('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>].*>([^<]*)</a>)','[\\3] (link: \\2)', $string);
}
// by Ch'Pins`
buddy at directpay dot cz
14-May-2003 10:22
`i had to solve problem conserning DB2 timestamp format. here is how to parse ANSI timestamp format to DB2 timestamp format:
$mydate = Date("Y-m-d H:i:s");
$var = eregi_replace
("([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})"
,"\\1-\\2.\\3.\\4",$mydate);
echo "ANSI: $mydate, DB2 format: $var";
happy codding
buddy`
eder at xce dot de
03-May-2003 07:23
`/*As php at silisoftware dot com's example works only if there is not more than one link in $string, I rewrote his expression to function with strings containing multiple links: */
function AHREF2text($string) {
return eregi_replace('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>]*>([^<]*)</a>)','[\\3] (link: \\2)', $string);
}`
Rainmaker526 at hotmail.com
09-Mar-2003 07:02
`I have found that some characters cannot be used by eregi_replace (or ereg_replace). When you get the REG_BADRPT error, try backslashing any special chars in your pattern string
ex.
$str = eregi_replace("*", "", $somevar)
gives the REG_BADRPT error. Change it to
$str = eregi_replace("\*", "", $somevar)
to make it work`
php at silisoftware dot com
18-Feb-2003 11:08
`Transform HTML links into plain-text "links" with the URL visible
function AHREF2text($string) {
return eregi_replace('<A .*HREF=("|\')?([^ "\']*)("|\')?.*>([^<]*)</A>', '[\\4] (link: \\2)', $string);
}
$HTMLstring = 'A link to <a href="http://www.php.net">PHP.net</A>';
echo AHREF2text($HTMLstring);
// prints: A link to [PHP.net] (link: http://www.php.net)`
simon_a99 at yahoo dot co dot uk
27-Aug-2002 12:07
`To find a string regardless of case, you might want to use the matched string in the replacement string without changing its case.
For example, you're searching for $search = "letter" and the text being searched is $text = "post lEtTeR". I want to change the format of the matched string.
Do this:
eregi_replace($search, "<b>\\0</b>", $text);
$text has now been changed to "post <b>lEtTeR</b>". \\0 is the entire text matched (lEtTer in this case).`
shane at unixcentral dot co dot za
07-Feb-2002 05:53
`A Quick way of removing excess spaces:
<?
$string = "One Two Three Four";
$var = eregi_replace(" +", " ", $string);
echo $var;
?>`
add a note
eregi ereg

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST