好的,我知道这是一个新问题,但是如果IF 1(text:test出现在数据字符串中),我将如何才能执行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;
答案 0 :(得分: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);
}
}
或者:
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);
}
两者都做同样的事情。
&&
运算符表示“和”。
||
运算符表示“或”。
答案 1 :(得分:4)
你的意思是你想把一个嵌套在另一个里面吗?
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);
}
}
您也可以将其更改为使用&&
(表示“And”):
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 :(得分:4)
简单地嵌套您的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);
}
}
或者我误解了你的问题?
说“我尝试过将两者结合起来但最终遇到各种各样的问题”是非常模糊的。结合如何?像这样嵌套?什么问题?
答案 3 :(得分:2)
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);
}
}