首页 新闻 会员 周边

看了很久,测试很久不知道什么问题,怎么搞啊,,帮帮我,,PHP的正则,,自己编的字符自己正则不出来

0
悬赏园豆:50 [已解决问题] 解决于 2015-12-28 16:25

字符是这样的

文本里有多条这样的规则,我想找出来,把相应文本取出来

{list=[my_name_007],[*,name,top],[1=1,2=2,abc=cde],[my name is cc, aa bb cc],[0],[0]}

<li>abc,def=</li>

{listend}

 

文章里有上面这样的字符很多个,帮我找出来

我写的表达式找不出来,郁闷了

$pattern = '/^\{list=\[([\w]+)\],\[([\w.\*]+)\],\[([\w.=]+)\],\[([\w.]+)\],\[([\d]*)\],\[([\d]*)\]\}([\w\s.]*)\{listend\}$/';

这是我最后一次测试用的,我改过很多次了,都没改对,,大家帮我取出中括号里的值和

{list=???}之间的html代码{listend}的字符

------------------------------------------------

{list=[字母 下划线 和数字],[*号和下划线和字母和逗号],[逗号 等号= 不等号!=大小于号<>  字母 字数 下划线],[字母数字下划线空格逗号],[数字],[数字]}

这里是html字符网页用的所有可能的字符,包括中英文,等其它符号

{listend}

 

preg_replace  $1  $2  $3  $4  $5  $6  $7

 

都有值的,,帮帮我,,

 

感谢感谢,,先谢谢,,谢谢强大的博客园,谢谢威武的程序大哥....

女子100的主页 女子100 | 初学一级 | 园豆:85
提问于:2015-07-27 19:55
< >
分享
最佳答案
0

$sStr = '{list=[my_name_007],[*,name,top],[1=1,2=2,abc=cde],[my name is cc, aa bb cc],[0],[0],[nange]}
<li>abc,def=</li>
<li>dsdsdas924049081_1=*34</li>
<li>nange_nange</li>{listend}';
//匹配整个$sStr
preg_match_all('/^{list=.+}?\n?(.*\n?)*.*?{listend}/', $sStr, $arMatches);
print_r($arMatches);
if($arMatches[0])
{
//匹配[....]中的内容
preg_match_all('/(\[[a-zA-Z0-9_*= ,]+\]),?\1?/', $sStr, $arMatches1);
print_r($arMatches1[1]);
//匹配<li>.....</li>
preg_match_all('/<[a-zA-Z]+>(.*)<\/[a-zA-Z]+>/',$sStr, $arMatches2);
print_r($arMatches2[1]);
}

运行结果

Array
(
[0] => Array
(
[0] => {list=[my_name_007],[*,name,top],[1=1,2=2,abc=cde],[my name is cc, aa bb cc],[0],[0],[nange]}
<li>abc,def=</li>
<li>dsdsdas924049081_1=*34</li>
<li>nange_nange</li>{listend}
)

[1] => Array
(
[0] =>
)

)
Array
(
[0] => [my_name_007]
[1] => [*,name,top]
[2] => [1=1,2=2,abc=cde]
[3] => [my name is cc, aa bb cc]
[4] => [0]
[5] => [nange]
)
Array
(
[0] => abc,def=
[1] => dsdsdas924049081_1=*34
[2] => nange_nange
)

收获园豆:20
zhaoyingnan911 | 菜鸟二级 |园豆:245 | 2015-07-28 19:44
其他回答(3)
0

估计这样,你在研究一下

 

\{list=\[(\w+)\],\[(\*(,\w+)*)\],\[(\w+=\w+)(,\w+=\w+)*\],\[([\s\S]+(,[\s\S]+)*)\],\[(\d+)\],\[(\d+)\]\}(.*?)\{listend\}
收获园豆:10
Yu | 园豆:12980 (专家六级) | 2015-07-28 08:49

呜呜,,没通过,,,还要继续改,继续调试

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2015-07-28 09:36
2

类似于如下的结果????

收获园豆:10
火悬崖 | 园豆:434 (菜鸟二级) | 2015-07-28 09:10

是的,要的是一个值一个值 的,,不要逗号连一起

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2015-07-28 09:37

那个<li>中英文基dfef@#$^#*%)(^_!%#@$^^&</li>

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2015-07-28 09:38

那个<li>中英文基dfef@#$^#*%)(^_!%#@$^^&</li>

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2015-07-28 09:38

@女子100: 。。。。

^\{list=\[(.+)\],\[(.+)\],\[(.+)\],\[(.+)\],\[(.+)\],\[(.+)\]\}\<\.+\>(.+)\</\w+\>\{listend\}$

试试看,我用的c#测试的

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2015-07-28 09:43
1

你的正则错了吧。这么多[]括号

收获园豆:10
gw2010 | 园豆:1487 (小虾三级) | 2015-07-29 16:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册