Как объединить два оператора IF в PHP - PullRequest
9 голосов
/ 10 мая 2011

Хорошо, я знаю, что это новый вопрос, но как бы я выполнил только IF 2, если IF 1 (text: test появляется в строке данных.) , Так что, если test не показывает пропущенные циклы, если это так, то будет выполняться код регулярного выражения, который у меня есть в IF 2.

$data = 'hello world "this is a test" last test';


// IF 1 
if (stripos($data, 'test') !== false) {
}


// IF 2
if (preg_match('/"[^"]*"/i', $data, $regs)) {
$quote = str_word_count($regs[0], 1);
$data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

echo $data;

Ответы [ 4 ]

13 голосов
/ 10 мая 2011

Либо:

if (stripos($data, 'test') !== false) {
    if (preg_match('/"[^"]*"/i', $data, $regs)) {
        $quote = str_word_count($regs[0], 1);
        $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
    }
}

Или:

if (stripos($data, 'test') !== false && preg_match('/"[^"]*"/i', $data, $regs)) {
    $quote = str_word_count($regs[0], 1);
    $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

Оба делают одно и то же.Оператор && означает «и».Оператор || означает «или».

4 голосов
/ 10 мая 2011

Просто вложите свои утверждения IF

if (stripos($data, 'test') !== false) {
    if (preg_match('/"[^"]*"/i', $data, $regs)) {
        $quote = str_word_count($regs[0], 1);
        $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
    }

}

Или я неправильно понял ваш вопрос?

Сказать «Я пытался объединить два, но в итоге столкнулся со всеми видами проблем» довольнорасплывчатый.Объединяя как?Вложено так?Какие проблемы?

4 голосов
/ 10 мая 2011

Вы хотите сказать, что хотите вложить одно в другое?

if (stripos($data, 'test') !== false)
{

  if (preg_match('/"[^"]*"/i', $data, $regs))
  {
     $quote = str_word_count($regs[0], 1);
     $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
  }

}

Вы также можете изменить это на && (что означает «И»):

if (stripos($data, 'test') !== false && preg_match('/"[^"]*"/i', $data, $regs)) {
            $quote = str_word_count($regs[0], 1);
            $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

Кроме того, ваш код использует !==. Это то, что вы имели в виду или вы имели в виду !=? Я считаю, что они имеют разные значения - я знаю, что != означает «Не равно», но я не уверен насчет !==.

2 голосов
/ 10 мая 2011
if (stripos($data, 'test') !== false) {
  if (preg_match('/"[^"]*"/i', $data, $regs)) {
  $quote = str_word_count($regs[0], 1);
  $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...