[問題] 要取代#16888 但不取代䇸

作者: ThiefFan (不務正業的賊)   2017-01-10 16:40:37
/*
用php的preg_replace()
需要幫 #xxxxx 加連結
但原本寫法會把 &#xxxx; 也加連結而不能正常顯示該字元
應該怎麼修正才對呢?目前試過的兩種寫法如下:
*/
<pre><?
$a="
測試preg #12829
有空格 #128 #129 #130
沒空格#128#129#130
要取代#16888
但不取代&#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>
作者: LPH66 (-6.2598534e+18f)   2017-01-10 17:12:00
用 (?<! ) 這個和 (?! ) 類似, 不過是看前面的同樣地 (?= ) 的向前看版本是 (?<= )啊, 講反了XD 這叫 Lookbehind, 所以是"回頭看"這樣就可以去掉中間抓前一個字的 . 了
作者: ThiefFan (不務正業的賊)   2017-01-20 21:34:00
感謝!!

Links booklink

Contact Us: admin [ a t ] ucptt.com