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

PHP - 将点替换为箭头

PHP - 将点替换为箭头

PHP
子衿沉夜 2022-12-23 15:15:07
我在我的数据库中获取了这些数据:如您所见,我在数据库中存储了一个 html 模板。这是我用来输出该 html 的代码:$php = Blade::compileString($template->content);dd($php) //i used laravel framework, btw.然后这是输出:<!doctype html><html><head>    <meta charset="UTF-8">    <title>Exmaple.com</title>    <style>    </style></head><body>    <div class="account-details">        <b>Account Name</b>: <?php echo e(company.name); ?><br>        <b>Plan</b>: <?php echo e(plan.name); ?><br>        <b>Source</b>: <?php echo e(source.name); ?><br>        <b>Source Type</b>: <?php echo e(source.source_type.name); ?><br>        <br>    </div>    <div class="welcome" style="font-family:Arial;font-size:small">        Hi <?php echo e(user.first_name); ?>,<br>        <br>        There seems to be a problem blah blah blah<br>        <br>        Details of the problem are:<br>        <?php echo e(sourceMessage); ?><br>        <br>        You can check and update the source here:<br>        https://example.com<br>        <br>        <br>        <span style="font-size:12.8px">            Kind regards,<br>            <br>           Test Team<br>            <br>            Email: <a href="mailto:test@example.com" target="_blank">example.com</a><br>            Website: <a href="http://example.com" target="_blank">example.com</a><br>        </span>    </div></body></html>我想在这个例子中将.(dot) 更改为->so,一些文本将输出如下:从<?php echo e(company.name); ?>到<?php echo e(company->name); ?>从<?php echo e(source.name); ?>到<?php echo e(source->name); ?>所以我认为如果它在 a<?php echo e(whatever);  ?>那是我们检查并替换为的.时间->?我认为这可以通过 RegEx 来完成,但我不是这方面的专家。我想替换它的原因是因为我从电子邮件服务获取模板然后返回.,所以我想替换它->因为我知道 PHP 读取->访问对象而不是..
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

您可以使用preg_replace查找匹配的代码片段<?php ... e(f)并将.sf替换为->:


$html = preg_replace_callback('/(<\?php\s+.*?\be\()([^)]+\))/',

                              function ($m) {

                                  return "{$m[1]}$" . str_replace('.', '->', $m[2]);

                              },

                              $html);

请注意,我们使用回调,因为它可以更轻松地处理替换a.b.c为a->b->c. 此外,要真正看起来像 PHP,您需要$在变量名的开头添加一个,这段代码就是这样做的。如果您不想要它,只需更改{$m[1]}$为{$m[1]}


3v4l.org 上的演示


查看完整回答
反对 回复 2022-12-23
?
茅侃侃

TA贡献1842条经验 获得超21个赞

如果你在像 VS code 或 sublime 这样的编辑器上这样做,你只需要替换 function e usage 部分。

CTRL + H(在 sublime 或 VS 代码中)打开替换对话框。确保单击正则表达式选项。

这样就可以了;

搜索(e\(.+)\.(.+\))

代替$1->$3


查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信