作者lottemarines (一平)
看板RegExp
标题[问题] 类似wiki关键字的作法
时间Wed Jan 20 22:26:06 2010
各位前辈大家好:
小弟原本在php版问这个问题
想请教如何写出类似wiki关键字的效果,举例来说,就是使用者在留言的时候
用[]包住的文字,存入资料库之後就会变成连结,
甚至还能分辨资料库中是否有此资料,然後显现出不同的颜色(此段可以先不用实做)
例如 [ptt],就会连结到
http://localhost/serch.php?text=ptt
当然,当使用者编辑留言的时候,也能恢复成 [ptt] 。
请高手赐教或者提供关键字、相关网址供小弟参考,感谢!!
後来 lvlightvivi 兄回我这个答案
<?php
$string = "Welcome to [ptt]";
//你要改的文章
$pattern = "/\[(\S+)\]/"; //正规表示式 请务必学一下
//上面的意思是找出 [string] 这样的形式 用括号把里面string抓为暂存
$replacement = "<a href='
http://localhost/serch.php?text=\${1}'>\${1}</a>";
//要代换的项目\${1}就是你抓的暂存
print preg_replace($pattern, $replacement, $string);
//印出结果
?>
不过这个答案发现有问题耶,因为假设把$str改为
$string = "兄弟象[陈致远]没有打[假球]";
程式会把$string变成
兄弟象
陈致远]没有打[假球
蓝色字代表连结,他把两个关键字弄成一个了,要怎麽样做才能正常呢?!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.39.156.2
1F:→ adrianshum:search for greedy and non-greedy match 01/20 22:47
2F:推 No:加个问号用non-greedy吧 "/\[(\S+?)\]/" 01/21 00:29