我正在尝试循环,直到找到所需的字符串,但脚本停止并且不循环。这有什么不对?
<?php
class foo {
function somefunction() {
$script = dirname(__FILE__)."/script.sh";
exec($script, $result);
$result = array_map('trim', $result);
$var1 = $result[2];
$var2 = $result[4];
$reg="/^String1/";
if(preg_match($reg,$var2)) {
return array('variable1'=>$var1, 'variable2'=>$var2);
echo "<pre>\n";
}
else{
while(!preg_match('/^String1/',$var2)) {
$bar = new foo;
}
}
}
}
$bar=new foo;
print_r($bar->somefunction());
?>
我正在努力实现的例子:
循环:
1。嗨
2.Hello
3.String1(返回此正则表达式匹配)
4.heyya
5.String1(返回此正则表达式匹配)
更新:我不得不增加xdebug.max_nesting_level否则返回'最大函数嵌套级别'错误
答案 0 :(得分:0)
麻烦的是,你总是找到与你的第一个if语句匹配:
if(preg_match($reg,$var2))
然后你返回你的功能,所以它永远不会打到时间:
return array('variable1'=>$var1, 'variable2'=>$var2);
由于preg_match
已经返回了一系列匹配项,您应该可以执行以下操作:
class foo {
function somefunction() {
$script = dirname(__FILE__)."/script.sh";
exec($script, $result);
$result = array_map('trim', $result);
$var1 = $result[2];
$var2 = $result[4];
$reg="/^String1/";
if(preg_match($reg,$var2,$matches)) {
return $matches;
} else {
$bar = new foo;
return $bar->somefunction();
}
}
}
...只是我对$ var1和$ var2在哪里发挥作用以及为什么你明确引用该数组中的第2和第5个元素感到有些困惑?