我在我的数据库中获取了这些数据:如您所见,我在数据库中存储了一个 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]}
茅侃侃
TA贡献1842条经验 获得超21个赞
如果你在像 VS code 或 sublime 这样的编辑器上这样做,你只需要替换 function e usage 部分。
CTRL + H(在 sublime 或 VS 代码中)打开替换对话框。确保单击正则表达式选项。
这样就可以了;
搜索(e\(.+)\.(.+\))
代替$1->$3
- 2 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消