我有下面的图片,我想删除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,却没有找到答案。
答案 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)