php - Laravel Blade 中的字符串替换
问题描述
我在 Laravel 5.8 中有项目。
我有这个代码:
<a href="{{ route('user', ['url_address' => $user->url_address, 'id' => $user->id]) }}"><img
src="{{ $user->images->first()->path ?? $placeholder }}"
class="img-responsive center" alt="{{ $user->name }}"></a>
这还给我:
<a href="http://name.com/user/name/2"><img src="upload/images/UserImage/c561b1742783ed038521c488d1cd59a1.jpg" class="img-responsive center" alt="angel"></a>
我需要更换这个:
upload/images/UserImage/c561b1742783ed038521c488d1cd59a1.jpg
到:
upload/images/UserImage/thumbs3/c561b1742783ed038521c488d1cd59a1.jpg
我怎样才能做到?
解决方案
您在这里有几个选择。您可以更新您的数据库数据,添加一个新列来存储拇指路径,或者修改现有路径。
这是使用https://laravel.com/docs/5.8/helpers#method-str-replace-first的一种方法
<?php
use Illuminate\Support\Str;
...
$search = 'upload/images/UserImage/';
$replace = 'upload/images/UserImage/thumbs3/';
$original = $user->images->first()->path;
$replaced = Str::replaceFirst($search, $replace, $original );
// Now, use `$replaced` as your image src.
<a href="{{ route('user', ['url_address' => $user->url_address, 'id' => $user->id]) }}">
<img src="{{ $replaced ?? $placeholder }}"
class="img-responsive center" alt="{{ $user->name }}">
</a>
我还应该提到,根据我的经验,维护一个系统更容易,您在数据库中存储的所有内容都是上传文档的文件名。在这种情况下,c561b1742783ed038521c488d1cd59a1.jpg
。
然后,您的视图控制要查看的目录:...public_path('upload/images/thumbs/' . $user->profile_image)
推荐阅读
- go - golang中如何实现反向代理支持nginx渐进式下载?
- python - python - 如何在Python的数据框中应用将多个数字拆分到列的字段的函数?
- linux - 如何使用 diff 命令使用忽略匹配行选项区分 2 个文件
- apache-spark - spark结构化流批处理数据刷新问题(按子句分区)
- firebase - 我在“应用引擎”应用程序中收到一些未知请求,想知道它们是什么
- python - 为什么即使指定了 Y lim,Matplotlib 条形图也会切出高值?
- html - 在方形空间中调整 iframe 的大小以适应任何屏幕尺寸
- typescript - 具有静态工厂的抽象父类的子类的类型
- flutter - 即使在颤振应用程序窗口之外如何获得鼠标位置
- dataframe - 当数据位于两个不同的数据帧中时,如何显示阴影错误带?