vars[a]"和" == 'a'" 同时匹配出来 a是可变的字符串==,!=,>比较运算符也是可变的谢谢 {代码...} 在@Hao..."/> vars[a]"和" == 'a'" 同时匹配出来 a是可变的字符串==,!=,>比较运算符也是可变的谢谢 {代码...} 在@Hao...">
Heim > Backend-Entwicklung > PHP-Tutorial > 正则表达式请教如何匹配

正则表达式请教如何匹配

WBOY
Freigeben: 2016-06-06 20:30:23
Original
1013 Leute haben es durchsucht

在测试一个模版代码的时候出现的问题,搞了好久,无解

<code>"<?php if(<?php echo $this -> vars[a] ;?> == 'a') ?>"
"<?php if(<?php echo $this -> vars[a] ;?> != 'a') ?>"
"<?php if(<?php echo $this -> vars[a] ;?> > 'a') ?>"</code>
Nach dem Login kopieren
Nach dem Login kopieren

请教如何把以上字符串中的"$this -> vars[a]"和" == 'a'" 同时匹配出来

a是可变的字符串
==,!=,>比较运算符也是可变的
谢谢

<code>> if\(\s*vars\[.+?\])\s*;\s*\?>\s*(.*?)\)</code>
Nach dem Login kopieren
Nach dem Login kopieren

正则表达式请教如何匹配

在@HaoyCn的修改得到了解决方案

回复内容:

在测试一个模版代码的时候出现的问题,搞了好久,无解

<code>"<?php if(<?php echo $this -> vars[a] ;?> == 'a') ?>"
"<?php if(<?php echo $this -> vars[a] ;?> != 'a') ?>"
"<?php if(<?php echo $this -> vars[a] ;?> > 'a') ?>"</code>
Nach dem Login kopieren
Nach dem Login kopieren

请教如何把以上字符串中的"$this -> vars[a]"和" == 'a'" 同时匹配出来

a是可变的字符串
==,!=,>比较运算符也是可变的
谢谢

<code>> if\(\s*vars\[.+?\])\s*;\s*\?>\s*(.*?)\)</code>
Nach dem Login kopieren
Nach dem Login kopieren

正则表达式请教如何匹配

在@HaoyCn的修改得到了解决方案

<code><?php $str = "<?php if(<?php echo \$this -> vars[a] ;?> == 'a') ?>";
preg_match('/\s*vars\[([\'"]?)([A-Za-z0-9_]+)\\2\])\s*;\s*\?>\s*(==\s*([\'"]?)\\3\\5)/',$str,$match);
echo $match[1],$match[4];

?>
</code>
Nach dem Login kopieren

这只是个别案例,不知楼主具体会想要什么样的通用匹配

试试这个:

<code>/(\$this\s\-\>\svars\[a\]|(\=\=\s\'a\'))/g
</code>
Nach dem Login kopieren

鉴于php里面没有这个g flag,所以可以使用:

<code>preg_match_all($pattern, $stringReg, $matches);

</code>
Nach dem Login kopieren

直接在chrome中用js测试的,希望对你有用,匹配结果的第二个值为正真结果

<code>var a = "<?php if(<?php echo $this -> vars[a] ;?> == 'a') ?>";
var re = /^.*\s(\$this\s\-\>\svars\[a\]).*$/;
re.exec(a);
//["<?php if(<?php echo $this -> vars[a] ;?> == 'a') ?>", "$this -> vars[a]"]

var re2 = /^.*\s(\=\=\s\'a\').*$/;
re2.exec(a)
//["<?php if(<?php echo $this -> vars[a] ;?> == 'a') ?>", "== 'a'"]
</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage