曲径通幽论坛

标题: POSIX 扩展正则表达式函数:ereg_replace() -- 区分大小写方式替换文本 [打印本页]

作者: beyes    时间: 2011-8-25 20:35
标题: POSIX 扩展正则表达式函数:ereg_replace() -- 区分大小写方式替换文本
ereg_replace() 函数和 ereg() 类似,它的作用是 “以区分大小写的方式替换文本” ,它的原型如下:
[PHP] 纯文本查看 复制代码
string eregi_replace ( string $pattern , string $replacement , string $string )

ereg() 只是查找,而 ereg_replace() 不但查找而且还进行替换。

示例代码:
[PHP] 纯文本查看 复制代码
<?php
        $text = "This is a link to http://www.groad.net/ and http://www.qunet.info/ .";
        echo ereg_replace("http://([a-zA-Z0-9./-]+)", "<a href=\"\\0\">\\0</a>", $text);
?>

运行输出:

输出的样式是因为发生了替换的结果。查看页面源文件也可以看到:
This is a link to <a href="http://www.groad.net/">http://www.groad.net/</a> and <a href="http://www.qunet.info/">http://www.qunet.info/</a> .
上面程序中,我们从 $text 中查找 http://([a-zA-Z0-9./-]+) 符合这种的样式,然后用 <a href=\"\\0\">\\0</a> 样式进行替换。

<a href=\"\\0\">\\0</a> 中需要说明 2 点:

1. 在替换样式中用到了双引号,在双引号需要用反斜线进行转义,使之成为普通的双音符号,而不具特殊含义。

2.  \\0 是什么?
这是 PHP 的字符串替换功能的一个特性,该特性允许引用小括号内的字串(如符合 ([a-zA-Z0-9./-]+) 这个小括号内正则规律的字串 ),在引用这些字串时,需要用 \\0, \\1, \\2 这种形式。其中,\\0 表示引用整个字符串,\\1 表示引用第 1 个成功匹配的字串,如此类推...最多可以引用 9 个。再看下面的示例代码:
[PHP] 纯文本查看 复制代码

<?php
        $url = "groad (http://www.groad.net)";
        $url = ereg_replace("http://([a-zA-Z0-9./-]+)([a-zA-Z/]+)", "<a href=\"\\0\">\\0</a>", $url);

        echo $url;
?>

运行输出:
Remember ourdomain: http://www.groad.net/





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2