[问题] 要取代#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