使用正则表达式匹配多行,并使用regexp和PHP修改这些匹配行

使用正则表达式匹配多行,并使用regexp和PHP修改这些匹配行,php,regex,Php,Regex,我想基于正则表达式匹配多行。假设我有以下字符串: #include<math.h> #include<stdio.h> int main() 我想用include替换include,用include替换include。最终筛选的字符串如下所示: <span class="header">#include<math.h></span> <span class="header">#include<stdio.h>

我想基于正则表达式匹配多行。假设我有以下字符串:

#include<math.h>
#include<stdio.h>

int main()
我想用include替换include,用include替换include。最终筛选的字符串如下所示:

<span class="header">#include<math.h></span>
<span class="header">#include<stdio.h></span>

int main()
首先,我尝试将我的目标单词与以下格式进行匹配: /包括]+>/m 但这仅选择第一行,以下内容适用于多行: /包括]+>/gm

现在我试着准备这些匹配的行,如下所示:

 <span class="header">#include<math.h></span>
 <span class="header">#include<stdio.h></span>
代码:


这段代码给出了一个错误,并且知道php不支持“g”。这项简单的任务使我消磨了一天。任何帮助都将不胜感激

以下是解决您问题的PHP解决方案:

$str = <<<EOF
#include<math.h>
#include<stdio.h>

int main()
EOF;
$str = preg_replace('/(#include<[^>]+>)/', '<span class="header">$1</span>', $str);
echo $str;

使用或而不是使其成为多行。的可能重复。这个问题似乎与你之前的问题非常相似,请解释一下这个问题的不同之处,以及为什么你觉得有理由问一个新问题。@David。谢谢你抽出时间。如何将这两行代码改为:include in php?@AbdusSattarBhuiyan您可能应该更新您的问题,并提供有关您尝试过的php解决方案的具体细节,以及它不起作用的原因,因为现在您的问题是关于您的regex在RegExr中不起作用的问题。@AbdusSattarBhuiyan请查看更新的答案,您不应该在PHP preg_replace函数中放置/g标志。此外,PHP捕获组从$1开始,而不是$0。
$str = <<<EOF
#include<math.h>
#include<stdio.h>

int main()
EOF;
$str = preg_replace('/(#include<[^>]+>)/', '<span class="header">$1</span>', $str);
echo $str;
<span class="header">#include<math.h></span>
<span class="header">#include<stdio.h></span>

int main()
/#include<[^>]+>/gm