好吧,我知道这是一个新问题,但如果IF 1(文本:测试出现在数据字符串中),我将如何才能执行IF 2.我尝试将两者结合起来但最终遇到各种各样的问题.因此,如果测试没有显示跳过的循环,如果它,那么我将在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;
Run Code Online (Sandbox Code Playgroud)
Ric*_*haw 13
或者:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
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);
}
Run Code Online (Sandbox Code Playgroud)
两者都做同样的事情.该&&运营商的意思是"和".该||运营商表示"或".
你的意思是你想把一个嵌套在另一个里面?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以将其更改为使用&&(这意味着“和”):
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);
}
Run Code Online (Sandbox Code Playgroud)
此外,您的代码使用!==. 这是你的意思还是你的意思!=?我相信它们有不同的含义——我知道这!=意味着“不相等”,但我不确定!==.