如何解决当字符串与变量连接时创建自定义 Laravel Blade 指令的更简单方法
我创建了以下刀片指令:
Blade::directive('bundle',function ($component) {
$string = "\":langs='\" . file_get_contents(base_path() . \"/resources/bundles/\" . App::currentLocale() . \"/$component.json\").\"'\";";
return ("<?PHP echo " . $string . "?>");
});
为了更好地理解发生了什么,这是我想用上面的字符串表示的代码(但作为 Blade 指令,这不是一个选项):
$path = base_path() . "\\resources\\bundles\\" . App::currentLocale() ."\\$component.json";
$json = file_get_contents($path);
return "<?PHP echo \":langs='\" $json \"'\"; ?>
现在,当 .json 文件中有单引号时,上面的 Blade 指令将不起作用,因为外部引号也是单引号。但无论如何,我觉得创建这个字符串太难了,我想知道有没有更简单的方法来生成最终字符串来回显结果?
解决方法
根据你的信息,这是我得到的:
Blade::directive('bundle',function ($component) {
$encoding = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT;
$component = trim($component,"'\" ");
$string = sprintf(
'":langs=\'" . json_encode(json_decode(file_get_contents(%s),true),%d) . "\'"','resource_path("bundles/" . App::getLocale() . "/' . $component . '.json")',$encoding
);
return ('<?php echo ' . $string . '?>');
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。