[問題] 類似wiki關鍵字的作法

看板RegExp (正規表示式 Regular Expression)作者 (一平)時間15年前 (2010/01/20 22:26), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
各位前輩大家好: 小弟原本在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

01/20 22:47, , 1F
search for greedy and non-greedy match
01/20 22:47, 1F

01/21 00:29, , 2F
加個問號用non-greedy吧 "/\[(\S+?)\]/"
01/21 00:29, 2F
文章代碼(AID): #1BLnA4Vt (RegExp)
文章代碼(AID): #1BLnA4Vt (RegExp)