作者ThiefFan (不務正業的賊)
看板RegExp
標題[問題] 要取代#16888 但不取代䇸
時間Tue Jan 10 16:40:37 2017
/*
用php的preg_replace()
需要幫 #xxxxx 加連結
但原本寫法會把 &#xxxx; 也加連結而不能正常顯示該字元
應該怎麼修正才對呢?目前試過的兩種寫法如下:
*/
<pre><?
$a="
測試preg #12829
有空格 #128 #129 #130
沒空格#128#129#130
要取代#16888
但不取代䇸
";
echo preg_replace('/#(\\d+)/', '<a href=de.php?no=\\1>#\\1</a>', $a);
echo "↑會取代&#";
echo preg_replace('/(?!&).#(\\d+)/', '<a href=de.php?no=\\1>#\\1</a>', $a);
echo "↑會吃#前面字元";
?></pre>
--
#1M3y1tdK #1M4JSnoz
推 jeffbear79: 談風月、評聖愚,追隨大智慧,巧奪班門明夜火,救世廣慈悲
→ jeffbear79: 好像念起來還挺順的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.241.104.164
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1484037642.A.B5C.html
※ 編輯: ThiefFan (210.241.104.164), 01/10/2017 16:41:41
推 LPH66: 用 (?<! ) 這個和 (?! ) 類似, 不過是看前面的 01/10 17:12
→ LPH66: 同樣地 (?= ) 的向前看版本是 (?<= ) 01/10 17:13
→ LPH66: 啊, 講反了XD 這叫 Lookbehind, 所以是"回頭看" 01/10 17:14
→ LPH66: 這樣就可以去掉中間抓前一個字的 . 了 01/10 17:14
→ ThiefFan: 感謝!! 01/20 21:34