求正则

weijiepeng 2010-05-07 12:44:08
在如下内容中找出{{}}之间的内容,<!---->内的不取,把最后的内容变成如下格式:$string|string1|string2
<table>
<tr><td>{{$string}}</td></tr>
<tr><td>{{$string1}}</td></tr>
<tr><td>{{$string2}}</td></tr>
<!--<tr><td>{{$string3}}</td></tr>-->
</table>
帮我讲讲,结合这个帮我讲讲正则
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaolankeke 2010-05-07
  • 打赏
  • 举报
回复
运行了一楼的方法,不错不错,呵呵
兔子-顾问 2010-05-07
  • 打赏
  • 举报
回复
Regex.Match(yourStr,@"(?<!<!--.*?)<tr><td>{{(.+?)}}</td></tr>(?!.+?-->)").Value
xuzuning 2010-05-07
  • 打赏
  • 举报
回复
会变通很重要!!!

$s = '<table>
<tr><td>{{$string}}</td></tr>
<tr><td>{{$string1}}</td></tr>
<tr><td>{{$string2}}</td></tr>
<!--<tr><td>{{$string3}}</td></tr>-->
</table>';

$p = "#{{2}(.+)}{2}|<!.+{{2}(.+)}{2}#";

preg_match_all($p, $s, $r);

print_r($r);

Array
(
[0] => Array
(
[0] => {{$string}}
[1] => {{$string1}}
[2] => {{$string2}}
[3] => <!--<tr><td>{{$string3}}
)

[1] => Array
(
[0] => $string
[1] => $string1
[2] => $string2
[3] =>
)

[2] => Array
(
[0] =>
[1] =>
[2] =>
[3] => $string3
)

)
ghostxyz0 2010-05-07
  • 打赏
  • 举报
回复

<?php
$str = "
<table>
<tr><td>{{\$string}}</td></tr>
<tr><td>{{\$string1}}</td></tr>
<tr><td>{{\$string2}}</td></tr>
<!--<tr><td>{{\$string3}}</td></tr>-->
</table>
";

$temp = preg_replace("/<!\-\-(.*)\-\->/i",'',$str);
$i = preg_match_all("/\{\{(.*?)\}\}/i",$temp,$match);
echo implode('|',$match[1]);
?>


思路顯而易見,期待有更好的正則

21,886

社区成员

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

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