看板 RegExp 關於我們 聯絡資訊
各位前輩大家好: 小弟原本在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
adrianshum:search for greedy and non-greedy match 01/20 22:47
No:加個問號用non-greedy吧 "/\[(\S+?)\]/" 01/21 00:29