作者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
1F:推 jeffbear79: 谈风月、评圣愚,追随大智慧,巧夺班门明夜火,救世广慈悲
2F:→ jeffbear79: 好像念起来还挺顺的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.241.104.164
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1484037642.A.B5C.html
※ 编辑: ThiefFan (210.241.104.164), 01/10/2017 16:41:41
3F:推 LPH66: 用 (?<! ) 这个和 (?! ) 类似, 不过是看前面的 01/10 17:12
4F:→ LPH66: 同样地 (?= ) 的向前看版本是 (?<= ) 01/10 17:13
5F:→ LPH66: 啊, 讲反了XD 这叫 Lookbehind, 所以是"回头看" 01/10 17:14
6F:→ LPH66: 这样就可以去掉中间抓前一个字的 . 了 01/10 17:14
7F:→ ThiefFan: 感谢!! 01/20 21:34