曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3196|回复: 0
打印 上一主题 下一主题

POSIX 扩展正则表达式函数:ereg_replace() -- 区分大小写方式替换文本

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-8-25 20:35:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ereg_replace() 函数和 ereg() 类似,它的作用是 “以区分大小写的方式替换文本” ,它的原型如下:
[PHP] 纯文本查看 复制代码
string eregi_replace ( string $pattern , string $replacement , string $string )

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

示例代码:
[PHP] 纯文本查看 复制代码
<?php
        $text = "This is a link to [url]http://www.groad.net/[/url] and [url]http://www.qunet.info/[/url] .";
        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 ([url]http://www.groad.net[/url])";
        $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/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 01:07 , Processed in 0.119330 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表