求PHP高手解释下面这段代码
$string='[b]粗体字[/b]';$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);e...
$string='[b] 粗体字[/b]';
$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);
echo $b_rst;
这段代码什么意思。看都看不懂呢!!!
那个正则表达式什么意思。不懂= = 展开
$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);
echo $b_rst;
这段代码什么意思。看都看不懂呢!!!
那个正则表达式什么意思。不懂= = 展开
3个回答
展开全部
这段代码的含义是把[b]xxxxx[/b]替换成<b>xxxxx</b>,也就是一般论坛里面的加粗代码。
----------------------
相信你们混很多论坛都有写帖子的时候要怎样怎样就可以加粗文字的经验吧,这段代码就是具体实现这个过程的。
至于为什么要这么替换一次而不直接用<b></b>,这是因为所有html标签都必须转义,所以用一个不是html标签的假标签来代替它。
那为什么html标签都必须转义呢?这就是网络应用开发一个最基础也最重要的安全问题了,这方面的详细内容还是自己看教材吧。
------------------------------------------------
至于这个正则表达,一楼纯粹是在胡说八道:
preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string)
'/\[b\](.*)\[\/b\]/i'这个是正则匹配模型,由于[]/这些符号本身在正则引擎中另有特殊含义,所以作为字符需要匹配的时候就必须转义,也就是需要写成\[ \] \/这样,那么/\[b\](.*)\[\/b\]/的含义也就是匹配所有[b](除换行符之外任意数量的任意字符)[/b]或者[B](除换行符之外任意数量的任意字符)[/B];
'<b>$1</b>',这个是替换模型,里面这个$1也有特殊含义,第一个正则匹配模型里面有一个圆括号,在正则里面圆括号同时代表反向引用,在替换模型中可以用$+数字来按顺序分别调用这个圆括号中间匹配到的内容,在这个例子也就是除了[b]和[/b]之外的所有内容。
$string,这个是替换对象,你该明白是啥意思了。
----------------------
相信你们混很多论坛都有写帖子的时候要怎样怎样就可以加粗文字的经验吧,这段代码就是具体实现这个过程的。
至于为什么要这么替换一次而不直接用<b></b>,这是因为所有html标签都必须转义,所以用一个不是html标签的假标签来代替它。
那为什么html标签都必须转义呢?这就是网络应用开发一个最基础也最重要的安全问题了,这方面的详细内容还是自己看教材吧。
------------------------------------------------
至于这个正则表达,一楼纯粹是在胡说八道:
preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string)
'/\[b\](.*)\[\/b\]/i'这个是正则匹配模型,由于[]/这些符号本身在正则引擎中另有特殊含义,所以作为字符需要匹配的时候就必须转义,也就是需要写成\[ \] \/这样,那么/\[b\](.*)\[\/b\]/的含义也就是匹配所有[b](除换行符之外任意数量的任意字符)[/b]或者[B](除换行符之外任意数量的任意字符)[/B];
'<b>$1</b>',这个是替换模型,里面这个$1也有特殊含义,第一个正则匹配模型里面有一个圆括号,在正则里面圆括号同时代表反向引用,在替换模型中可以用$+数字来按顺序分别调用这个圆括号中间匹配到的内容,在这个例子也就是除了[b]和[/b]之外的所有内容。
$string,这个是替换对象,你该明白是啥意思了。
展开全部
貌似我这个低手也能看懂
$string='[b]粗体字[/b]'; //你懂的
$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);
//重点就是preg_replace替换函数,作用就是将[b]xxx[/b]替换成[b]$1</b>
//最重点的是$1,数字是不可能成为变量的,不符合命名规范,你懂的。
//如果$1是$i的话也不标准,最好写成
//$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>'.$i.'</b>',$string);
echo $b_rst; //你懂的
$string='[b]粗体字[/b]'; //你懂的
$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);
//重点就是preg_replace替换函数,作用就是将[b]xxx[/b]替换成[b]$1</b>
//最重点的是$1,数字是不可能成为变量的,不符合命名规范,你懂的。
//如果$1是$i的话也不标准,最好写成
//$b_rst=preg_replace('/\[b\](.*)\[\/b\]/i','<b>'.$i.'</b>',$string);
echo $b_rst; //你懂的
追问
= =太简单了,我就是想问整个正则表达式什么意思!
追答
就是php的转义符,很基本的东东
[b]xxx[/b]
如果写成正则的话应该是
\[b\]xxx\[\/b\] 懂了吗。
其中的[转义成\[
]转义成\]
/转义成\/
每个需要转义的符号前加上\
preg_replace函数的基本用法就是
preg_replace('/查找字符串/is','替换字符串','完整字符串') 这是固定的格式。
其中is分别是二个常用参数,参数区别大小写,可以同时使用。
i表代查找的字符串不区分大小写
s替换结果保留换行
还有好多参数,没用到过,所以不清楚。
写这么不加点分吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你学学 正则表达式教程 。可以百度文库搜索一下 很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询