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。将其转义 \?
或通过将其放入字符类 [?]
来取消其含义。
谢谢它的工作,我可以接受它作为一个有效的答案
你可能想要使用一个字符类,你不需要转义并且可以包含&
,以防参数不是第一个。 [?&]time=(\d+)
你拯救了我的一天 tcpdf 在读取带有时间参数的图像时遇到问题(在 Prestashop 中)
【参考方案1】:
您忘记转义在正则表达式中具有特殊含义的问号。逃避它:
$pattern = '/\?time=(\d+)/i';
【讨论】:
以上是关于PHP用空白替换动态字符串的主要内容,如果未能解决你的问题,请参考以下文章
PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能
复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符