![将 Perl Regex 转换为 PHP](https://linux22.com/image/1403681/%E5%B0%86%20Perl%20Regex%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20PHP%20.png)
我在 PERL 中有以下正则表达式,需要将其转换为 PHP
if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }
我目前在 PHP 中有以下内容来匹配它,但没有得到相同的结果:
preg_grep('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/', $lines);
有人能告诉我我所得到的是否相同或者我是否弄错了吗?
答案1
preg_grep
返回一个数组,而如果你使用preg_match
,您将获得一个布尔值。因此,如果您使用:
if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }
它相当于:
if(preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $line)) { };
尽管你可以稍微简化正则表达式:
if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line)) { };
如果你想查看比赛,你可以这样做:
if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line, $match)) {
print_r($match);
};
答案2
附加
i
模式修饰符到模式使用
preg_match
返回 true 或 false
示例代码:
if (preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $lines)) {
echo "A match was found.";
}