为了账号安全,请及时绑定邮箱和手机立即绑定

文本替换:PHP/regex

文本替换:PHP/regex

PHP
杨__羊羊 2021-10-22 14:15:42
在查看源代码模式下,我看到了一个与此类似的 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信