如何用正则表达式实现从[URL=xx]xxx [/URL]到xxx的替换

coolseafy 2003-04-01 09:22:46
我在做一个留言簿,支持标签功能
比如我想将[URL=http://www.sohu.com/detail.txt]点击查看全文[/URL] 替换成
<a href="http://www.sohu.com/detail.txt">点击查看全文</a>
如何才能做到
...全文
48 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2003-04-02
preg_replace函数可是用数组作为参数。也就是是说可以一次完成多个匹配和替换。功能是很强的。
贴一个小函数给你看看,应该容易理解的。
<?php
function ch_strtotime($d) {
$ar = array(
array("/今天|现在/","now "),
array("/昨|上|去/","-1 "),
array("/明|下/","+1 "),
array("/^前/","-2 "),
array("/^后/","+2 "),
array("/年/"," year "),
array("/月/"," month "),
array("/周|星期/"," week "),
array("/天|日/"," day"),
array("/小时/"," hours "),
array("/分/"," minutes "),
array("/秒/"," seconds "),
array("/(.+)后/","-\\1"),
array("/(.+)前/","-\\1")
);
for($i=0;$i<count($ar);$i++) {
$patterns[$i] = $ar[$i][0];
$replace[$i] = $ar[$i][1];
}
$d = preg_replace($patterns,$replace,$d);
echo "<br>",date("Y-m-d H:i:s",strtotime($d));
}

// 例
ch_strtotime("现在");
ch_strtotime("去年");
ch_strtotime("1小时3分40秒");
?>
回复
ahuasky 2003-04-02
大哥这样替换有什么意思呀!可以讲一 下,感激不尽!如果能把代码写一些注释会好一些,唠叨好像在csdn里的php栏目到处有你!
回复
xuzuning 2003-04-02
1、怎么知道的?
手册中有例子。理解了就会使用。
2、怎么学的?
多看、多试、多问、多用。
回复
coolseafy 2003-04-02
唠叨老大,好用。我试了,如果你再告诉我你是怎么知道这么做的,就是你怎么学的
正则表达式我就给你100分
回复
xuzuning 2003-04-02
$patterns = array(
"/\[URL ([^]]+)]/",
"/\[\/URL\]/"
);
$replace = array(
"<a href=\"\\1\">",
"</a>"
);
$s = preg_replace($patterns,$replace,$content);
回复
coolseafy 2003-04-02
手册中的例子好像不多
回复
coolseafy 2003-04-02
你是说php_manual_en手册吗?
回复
coolseafy 2003-04-01
strUBB是什么东西
看不太懂,不知道怎么用
这样吧,我详细写一下
$content="附近阿克苏菲撒发觉得撒发恺撒[URL http://www.sohu.com/detail.txt]点击查看全文[/URL]发达三分散发达三分散夺得撒发";
现在我想让$content变成这么样的
$content="附近阿克苏菲撒发觉得撒发恺撒<a href=http://www.sohu.com/detail.txt>点击查看全文</a>发达三分散发达三分散夺得撒发";

-------------------------------------------------
如何做阿
回复
wsj 2003-04-01
客户端脚本:

strHTML = strUBB.replace(/\[URL=(.*)\](.*)\[\/URL\]/gi,"<a href=$1>$2</a>")
回复
youbest 2003-04-01
Replace可以办到的
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2003-04-01 09:22
社区公告
暂无公告