在preg_replace中使用大括号

时间:2012-04-06 21:03:47

标签: php preg-replace

我正在尝试使用preg_replace来更改TeX文件的格式。

这是我的代码:

$regex = "#([\][A-Za-z]+)(Title)#e";
$replace = "('hl\{$1Title}')";
$newphrase = preg_replace($regex,$replace,$newphrase);

我的问题是“{”之前的“\”在我的输出中打印出来。

像这样:\ hl \ {FaithTitle}而不是:\ hl {FaithTitle}

我尝试了很多不同的东西,这里有几个:

$replace = "('hl{$1Title}')";

那个崩溃整个页面。

$replace = "('hl[{]$1Title}')";

那个打印出正方形和花括号。

我很感激任何帮助!

1 个答案:

答案 0 :(得分:2)

你的正则表达式没有做你认为它正在做的事情。

由于\,您的角色类实际上与A-Za-z匹配,但也与][匹配,因为\忽略了]和{{}的含义1}}在课堂上没有。

试试这个:

[

同时删除$regex = "#(\\[A-Za-z]+)(Title)#"; 修饰符。我不知道你为什么要把它放在那里,但这可能就是它崩溃的原因。