在查看源代码模式下,我看到了一个与此类似的 HTML 文档(为简洁起见,下面进行了简化):<html> <head> <title>System version: {{variable:system_version}}</title> </head> <body> <p>You are using system version {{variable:system_version}}</p> {{block:welcome}} <form> <input value="System version: {{variable:system_version}}"> <textarea> You are using system version {{variable:system_version}}. </textarea> </form> </body></html>我已经写了一些可以替换这些{{...}}类型字符串的函数,但是它们需要有选择地替换。在上面的示例中,我希望将其替换为 in<title>和 in <p>,而不是 in <input>,<textarea>因为这是用户提供的输入,将通过所见即所得编辑器或表单插入,并且必须保存为从用户收到的。该{{block:welcome}}也必须用它包含任何内容所取代。在渲染我的输出时,我会对它进行消毒,然后结果应该是这样的:<html> <head> <title>System version: 6.0</title> </head> <body> <p>You are using system version 6.0</p> <div> This was the content of the welcome block. </div> <form> <input value="System version: {{variable:system_version}}"> <textarea> You are using system version {{variable:system_version}}. </textarea> </form> </body></html>这是我尝试过的。对于下面的代码,$var 的值是 '6.0',$val 的值 = '{{variable:system_version}}',$data 是要搜索的整个字符串:if (!preg_match('/<textarea|<input|<select(.+?)' . $val . '(.+?)<\/textarea|<\/input|<\/select\>/s', $data)) { $data = str_replace($val, $var, $data);} 请告知我的正则表达式有什么问题,因为它目前if无法替换任何内容,因此条件永远不会匹配。如果我做了str_replace没有if,则更换由,在所有情况下。
2 回答
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消