PHP循环搜索字符串,如果不匹配则执行

时间:2012-06-13 14:19:13

标签: php

我正在尝试在较大的字符串中搜索多个字符串,如果它们都不匹配,则操纵原始字符串。这是代码:

$searchthis = 'this is a string'
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    break;
  }
  else{
    $searchthis = $searchthis . ' addthis';
  }
}

问题是在搜索第一个字符串变量并且不匹配之后,在运行下一个测试之前操作原始搜索字符串。

有什么想法?提前致谢

3 个答案:

答案 0 :(得分:6)

您需要检查是否在您的循环之外没有匹配 。您可以通过在找到至少一个字符串时将变量($found)设置为true来完成此操作:

$found = false;
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    $found = true;
  }
}
if (!$found) {
  $searchthis = $searchthis . ' addthis'; 
}

答案 1 :(得分:1)

你的意思是

$searchthis = 'this is a string'
$arr = array('foo', 'bar');
$notfound = true;
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    $notfound = false;
    break;
  }
}
if ($notfound){
    $searchthis = $searchthis . ' addthis';
}

答案 2 :(得分:0)

或者像这样:

$searchthis = 'this is a string';
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
    if (strpos($searchthis, $value) !== false) {
        break;
    }
    else{
        if(!isset($result)) {
            $result = $searchthis . ' addthis';
        }
        else {
            continue;
        }
    }
}