在 PHP 字符串中更改 IMG src link

Change IMG src link inside PHP String

我遇到了麻烦,而我从数据库中提取的字符串如下所示

$string = 'The person name Abdul <img src="images/abdul.jpg" alt="abdul"/>.....';

我需要将其更改为

$string = 'The person name Abdul <img src="../../images/abdul.jpg" alt="abdul"/>.....';

如何使用 PHP 解决此问题?

虽然这不是最优雅的解决方案并且还有更多解决方案,但您可以使用 PHP 的 str_replace 并执行类似这样的操作。

<?php
   $string = 'The person name Abdul <img src="images/abdul.jpg" alt="abdul"/>.....';
   $string = str_replace('src="images/', 'src="../../images/', $string);

   echo $string;
?>

注意:我在图像部分前面添加 src=" 的唯一原因是帮助消除图像可能被错误命名的可能性。你可以改用这个。

$string = str_replace('images/', '../../images/', $string);

我建议不要将数据库中的项目保存为相对路径。只保存图像名称或更好,保存图像的完整 URL 并回显它。对于大数据(使用 CDN 等),它更干净、更强大。

More on str_replace here

正确的做法是,永远不要将 DOM 保存在 DB 中。

您可以保留类似 ##IMAGE_BASE_PATH##/adbul1.jpg 的内容,并在浏览器中呈现页面时....

$image = str_replace('##IMAGE_BASE_PATH##','../../images', $string);
<img src="$image" />

(有很多方法,上面是其中之一)

这有很多很好的理由。一些是:

  • 在另一个非HTML上下文中重复使用数据是不可能的
  • 无法将数据与其他数据一起提取
  • 你最终会遇到像现在这样的编码问题
  • 如果您想更改站点的布局方式,则必须更新每个数据库字段,而不是只更新一个 HTML 模板。