如何使用正则表达式和PHP向特定单词添加其他标签

时间:2018-11-25 17:36:14

标签: php regex

我想添加到#indlude中。即

#include<stdio.h> 
#include<math.h>
int main() 

是我的目标字符串,它将是:

  <span class="header">#include<stdio.h></span>
  <span class="header">#include<math.h></span>
  int main() 

我尝试使用正则表达式,如下所示:

<?php 
$input = '#include<stdio.h> int main()';
$input = preg_replace('/(#(\w)+<(\w)+.h>)/','<span class="header">$1</span>',$input);

echo $input;
?>

但是没有运气。有想法吗?

1 个答案:

答案 0 :(得分:2)

除非另有说明,否则不需要任何捕获组或行起始符;只需替换全串匹配($0

代码:(Demo

$string = <<<STRING
#include<math.h>
#include<stdio.h>

int main()
STRING;

echo preg_replace('~#include<[^>]+>~', '<span class="header">$0</span>', $string);

输出:

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

int main()

取反的字符类([^>]将贪婪地匹配<>之间的所有字符-从模式效率的角度考虑,这是优选的。