请教正则替换

codeyell-com 2011-01-06 04:07:07
牢骚一句,正则好难学

我的问题如下,
把这个代码:

[cod="php"]<br />
//test</p>
<p>echo "test";<br />
[/cod]

替换成:

<pre name="code" class="php"><br />
//test</p>
<p>echo "test";<br />
</pre>

其中第一个代码中的cod="xxx"中的xxx是变化的,第二个代码中的class="xxx"要与第一个的xxx相同。
...全文
129 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt85654789 2011-01-07
  • 打赏
  • 举报
回复
正则学到我头痛了
ihefe 2011-01-07
  • 打赏
  • 举报
回复
life169 2011-01-07
  • 打赏
  • 举报
回复
我也写一个

preg_replace("/\[cod=\"(.*?)\"\](.*?)\[\/cod\]/is", "<pre name=\"code\" class=\"$1\">$2</pre>", $str);
tangjianft 2011-01-06
  • 打赏
  • 举报
回复
我觉得我这个比较简单直观
preg_replace('/\[cod="(.*?)"\](.*?)\[\/cod\]/is', '<pre name="code" class="$1">$2</pre>', $str);
在-云端 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 baiyuxiong 的回复:]

PHP code

function removeBr($str)
{
return preg_replace("/\<br \/\>/","",$str);
}

echo(preg_replace("/\[cod=\"([^\"]+)\"\]((?:.|\n)*?)\[\/cod\]/e","removeBr('<pre name=\"code\" class=\"$1\">$2<……
[/Quote]

我晕!你之前没把可能出现的情况说清楚!代码中间部分还有[]符号!
强烈
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复

function removeBr($str)
{
return preg_replace("/\<br \/\>/","",$str);
}

echo(preg_replace("/\[cod=\"([^\"]+)\"\]((?:.|\n)*?)\[\/cod\]/e","removeBr('<pre name=\"code\" class=\"$1\">$2</pre>')",$content));


研究出来了,哈哈
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复
对四楼的代码用不了。

新问题:像四楼的代码,如何能再把代码里的换行:
<br />

去掉?
[Quote=引用 8 楼 mingfish2 的回复:]
老虎哥的能用
[/Quote]
mingfish2 2011-01-06
  • 打赏
  • 举报
回复
老虎哥的能用
LiveAsaMonster 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 baiyuxiong 的回复:]

PHP code

echo(preg_replace("/\[cod=\"([^\"]+)\"\]((?:.|\n)*?)\[\/cod\]/","<pre name=\"code\" class=\"$1\">$2</pre>",$content));
[/Quote]+1
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复

echo(preg_replace("/\[cod=\"([^\"]+)\"\]((?:.|\n)*?)\[\/cod\]/","<pre name=\"code\" class=\"$1\">$2</pre>",$content));
foolbirdflyfirst 2011-01-06
  • 打赏
  • 举报
回复
echo(preg_replace("/\[cod=\"([^\"]+)\"\](.*?)\[\/cod\]/s","<pre name=\"code\" class=\"$1\">$2</pre>",$content));
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复
兄弟,不对啊

$content = <<<TEST
[cod="js"]<br />
Array.prototype.each=function(callback)<br />
{<br />
 for (i=0;i&lt;this.length;i++)<br />
 {<br />
    callback.call(this,this[i]);<br />
 }<br />
}<br />
var arrayObject=["JavaScript","Prototype","Jquery"];<br />
arrayObject.each(function(x){alert(x)});<br />
[/cod]
TEST;


echo(preg_replace("/\[cod=\"([^\"]+)\"\]([^\[]+)\[\/cod\]/","<pre name=\"code\" class=\"$1\">$2</pre>",$content));

这个代码运行不正确。

[Quote=引用 3 楼 heyc1998 的回复:]
LZ结帖率:99.10%
好吧!给你个正确的!


PHP code

echo(preg_replace("/\[cod=\"([^\"]+)\"\]([^\[]+)\[\/cod\]/","<pre name=\"code\" class=\"$1\">$2</pre>",$str));\

//$str是你的整个字符串





-----------------……
[/Quote]
在-云端 2011-01-06
  • 打赏
  • 举报
回复
LZ结帖率:99.10%
好吧!给你个正确的!


echo(preg_replace("/\[cod=\"([^\"]+)\"\]([^\[]+)\[\/cod\]/","<pre name=\"code\" class=\"$1\">$2</pre>",$str));\

//$str是你的整个字符串




------------------测试哥的签名--------------------------
哥默默的低下头,不是哥修养好,而是哥在找砖头!
--------------------------------------------------------
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复
上面的代码错了

$pattern = "#[cod=\"(.+?)\"](.*?)[/cod]#";
$replacement = "<pre name=\"code\" class=\"\\1\">\\2</pre>";

$content =preg_replace($pattern,$replacement,$content);
codeyell-com 2011-01-06
  • 打赏
  • 举报
回复
我这么写为什么不对呢?

$pattern = "#[code=\"(.+?)\"](.*?)
#";
$replacement = "<pre name=\"code\" class=\"\\1\">\\2</pre>";
$content =preg_replace($pattern,$replacement,$content);
[/code]

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧