删除添加到img标签的参数

时间:2019-05-17 01:13:11

标签: javascript php wordpress

我有下面的图片,我想删除jpg(?resize = 495%2C371&ssl = 1)之后的所有内容

https://i1.wp.com/atalantadigital.com/wp-content/uploads/2016/11/sampleimg.jpg?resize=495%2C371&ssl=1

我尝试过:

preg_match_all('/<img[^>]+>/i', $images);

foreach ($images[0] as $image) {
 str_replace('?resize=495%2C371&ssl=1', ' ', $image);
}

我需要修复一些带有这些参数的图像。我对php或javascript解决方案持开放态度,谢谢!

然后我搜索了stackoverflow,却没有找到答案。

4 个答案:

答案 0 :(得分:1)

JavaScript非常适合此任务,因为我们可以通过img轻松选择所有src标签和img.src属性。

这将从页面上? img的网址中删除所有查询字符串(src及其后的所有内容)。

// searches for all images on page
let images = document.getElementsByTagName("img")
// for each image
for (let img of images) {
    // replace source query string with nothing
    img.src = img.src.replace(/\?.+$/, "")
}

正则表达式说明:

  

\?匹配文字?

     

.+$匹配之后的所有内容,直到输入结束

以下显示了正则表达式的工作原理:

let img = new Image;
img.src = 'https://i1.wp.com/atalantadigital.com/wp-content/uploads/2016/11/sampleimg.jpg?resize=495%2C371&ssl=1';

img.src = img.src.replace(/\?.+$/, "");

console.log(img.src);

答案 1 :(得分:0)

如果

var imgName = 'https://i1.wp.com/atalantadigital.com/wp-content/uploads/2016/11/sampleimg.jpg?resize=495%2C371&ssl=1'

那么您可以通过

得到想要的东西
imgName.substring(0, imgName.indexOf('?'))

答案 2 :(得分:0)

不确定我是否理解正确,但是据我了解,您有:

  • 包含<img src="image_url.jpg/?resize=495%2C371&ssl=1">一次或可能多次的字符串。

如果是这种情况,这应该可以解决问题(几乎与您相同):

$images = "<img src='https://sampleimg.jpg?resize=495%2C371&ssl=1'><img src='https://sampleimg.jpg?resize=495%2C371&ssl=1'>";
preg_match_all('/img[^>]+>/i', $images, $matches);

foreach ($matches[0] as $image) {
    echo $image;    // "<img src="image_url.jpg/?resize=495%2C371&ssl=1">"
    $image = str_replace('?resize=495%2C371&ssl=1', ' ', $image);    
    echo $image;    // "<img src="image_url.jpg">"
}

希望这对您有所帮助!

答案 3 :(得分:0)

如果您使用的是 W3 Total Cache 插件,则可能未选中该选项以避免创建查询字符串。可以通过导航到 W3插件的“性能”标签>浏览器缓存找到该选项。在此页面的“常规”部分中,有一个名为“防止更改设置后缓存对象”的选项

enter image description here

默认情况下取消选中此选项,但是如果出于任何原因启用了此选项,只需取消选择该选项并保存设置以防止创建查询字符串