D'accord, je sais que ceci est une question de Newb, mais comment irai-je seulement exécuter si 2 si si 1 (Texte: Test apparaît dans la chaîne de données.) J'ai essayé de combiner les deux mais finir avec toutes sortes de problèmes . Donc, si le test ne montre pas les boucles ignorées, si elle le fait alors, le code de regex que j'ai dans si 2 sera couru.
$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 Réponses :
Voulez-vous dire que vous voulez nier un à l'autre? Vous pouvez également modifier cela pour utiliser En outre, votre code utilise && code> (ce qui signifie "et"): < / p> ! == code>. Est-ce ce que vous vouliez dire ou avez-vous voulu dire ! = Code>? Je crois qu'ils ont des significations différentes - je sais que ! = Code> signifie "pas égal" mais je ne suis pas sûr de ! == p> p> p>.
Nettez simplement vos déclarations si
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);
}
}
soit:
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);
}
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);
}
}
Avez-vous essayé des opérateurs logiques, spécifiquement
&& code>? php.net/manual/fr/language.opérators.logical.phpCela ne fonctionnerait pas car la regex est toujours vraie, je dois effectuer uniquement la correspondance de Regex si le test de texte est trouvé.
En fait, cela fonctionne toujours. L'ordinateur est intelligent et essaie uniquement la regex si le premier chèque échoue. Cela s'appelle une évaluation de court-circuit. en.wikipedia.org/wiki/short_circuit_evaluation
Dans "if (a && b)", si un échec, B ne fonctionnera pas.
@Tesserex ahhh, je devrais rester bloqué avec cela, merci pour la clarification, malade savoir mieux la prochaine fois. :)