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用空白替换动态字符串的主要内容,如果未能解决你的问题,请参考以下文章