PHP用空白替换动态字符串

Posted

技术标签:

【中文标题】PHP用空白替换动态字符串【英文标题】:PHP replace a dynamic string with blank 【发布时间】:2016-06-01 15:06:10 【问题描述】:

我有这个 img 标签

<img src="../img/tmp/pack_mini_5753_.jpg?time=1464793546"  class="imgm img-thumbnail">

我想删除字符串?time=1464793546。我有时间是一个动态变量,所以1464793546 会随时间变化。

我试过了

 $image_tag = ImageManager::thumbnail($path_to_image, 'pack_mini_'.$pack_item->id.'_'.$this->context->shop->id.'.jpg', 120);
                        var_dump($image_tag);
 $pattern = '/(\w+)?time=(\d+)/i';
 $replacement = '$1';
 $pack_items[$i]['image'] =preg_replace($pattern, $replacement, $image_tag);
 var_dump($pack_items[$i]['image']);exit;

$image_tag 返回 img 标签

<img src="../img/tmp/pack_mini_5753_.jpg?time=1464793546"  class="imgm img-thumbnail">

Var_dump 返回 null。

【问题讨论】:

$pattern = '/\?time=(\d+)/i' 转义? ? has a special meaning in regex。将其转义 \? 或通过将其放入字符类 [?] 来取消其含义。 谢谢它的工作,我可以接受它作为一个有效的答案 你可能想要使用一个字符类,你不需要转义并且可以包含&amp;,以防参数不是第一个。 [?&amp;]time=(\d+) 你拯救了我的一天 tcpdf 在读取带有时间参数的图像时遇到问题(在 Prestashop 中) 【参考方案1】:

您忘记转义在正则表达式中具有特殊含义的问号。逃避它:

$pattern = '/\?time=(\d+)/i';

【讨论】:

以上是关于PHP用空白替换动态字符串的主要内容,如果未能解决你的问题,请参考以下文章

php的一些内置函数笔记

PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符

正则表达式匹配文本中包含换行符等空白字符如何匹配

sed简单使用替换

MYSQL中怎么替换某个字段值的空白值替换为特定值