【发布时间】:2016-06-01 15:06:10
【问题描述】:
我有这个 img 标签
<img src="../img/tmp/pack_mini_5753_.jpg?time=1464793546" alt="" 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" alt="" class="imgm img-thumbnail">
Var_dump 返回 null。
【问题讨论】:
-
$pattern = '/\?time=(\d+)/i' 转义
? -
?has a special meaning in regex。将其转义\?或通过将其放入字符类[?]来取消其含义。 -
谢谢它的工作,我可以接受它作为一个有效的答案
-
你可能想要使用一个字符类,你不需要转义并且可以包含
&,以防参数不是第一个。[?&]time=(\d+) -
你拯救了我的一天 tcpdf 在读取带有时间参数的图像时遇到问题(在 Prestashop 中)
标签: php string preg-replace