我正在使用smarty3。我已经尝试了以下代码:
{$ver|regex_replace:"/something/":"<div class="xyz">anything</div>"}
,它返回以下错误:
HTTP错误500
如果我删除了div标签内的class="xyz"
并使用了以下代码:
{$ver|regex_replace:"/something/":"<div>anything</div>"}
它工作正常。
答案 0 :(得分:0)
基本上,您几乎可以自己提供问题的答案。
在smarty中,您拥有变量$var
,并且正在使用smarty变量修饰符regex_replace进行正则表达式搜索并替换此变量。
聪明的变量修饰符regex_replace需要两个参数:
两个参数的类型均为string
。聪明的变量修饰符中的参数用冒号分隔。
在您的第一个代码示例中
{$ver|regex_replace:"/something/":"<div class="xyz">anything</div>"}
您的第一个参数是"/something/"
,但是第二个参数已损坏,因为您没有使用引号!
在第二个代码示例中
{$ver|regex_replace:"/something/":"<div>anything</div>"}
您在div上删除了class属性,因此不再存在转义引号的问题。这就是您的第二个代码示例正常工作的原因。
请记住,现在您可以通过转引号来更正第一个代码示例
{$ver|regex_replace:"/something/":"<div class=\"xyz\">anything</div>"}
或者您可以使用单引号,如注释中的建议:
{$ver|regex_replace:"/something/":"<div class='xyz'>anything</div>"}
我个人更喜欢使用单引号。