Php 使用javascript从这个html文件中提取imgsrc

Php 使用javascript从这个html文件中提取imgsrc,php,javascript,regex,Php,Javascript,Regex,我使用以下方法从文档的一部分提取图像: var theImg = document.getElementById('imageDiv').innerHTML; 这返回类似于 theImg = <img src="http://website.com/image.jpg?&image-presets&" alt="foo" style="z-index: 1" /> theImg= 如果没有参数,我怎么能只抓取图像的src呢。所以 theImg= 我愿意使用正则

我使用以下方法从文档的一部分提取图像:

var  theImg = document.getElementById('imageDiv').innerHTML;
这返回类似于

theImg = <img src="http://website.com/image.jpg?&image-presets&" alt="foo" style="z-index: 1" />
theImg=
如果没有参数,我怎么能只抓取图像的src呢。所以

theImg=


我愿意使用正则表达式、php或香草javascript。

只需在image元素本身上调用
.getAttribute('src')
,并将该字符串分配给img即可

更全面地说,以下是:

var theImg = document.getElementById('your_image').getAttribute('src');

未经测试,但我相信这应该可以做到。它首先检索图像
src
,然后去除以
开头的所有内容

var imgDiv = document.getElementById('imageDiv');
var imgs = imgDiv.getElementsByTagName("img");
for (var i = 0; i<imgs.length; i++) {
  var theImg = imgs[i].getAttribute('src').substr(0, theImg.indexOf('?'));
  console.log(theImg);
  // Do whatever you need to with theImg. Add to an array or whatever...
}
var imgDiv=document.getElementById('imageDiv');
var imgs=imgDiv.getElementsByTagName(“img”);

对于(var i=0;i对不起,是的,这更好

 var theImgSRC = document.getElementById('imageDiv').querySelector('img').getAttribute('src');

由于到目前为止,在一个有效的演示中似乎没有正确完整的答案,我将尝试一个:

var imgs = document.getElementById('imageDiv').getElementsByTagName('img');
var theImgSrc = imgs[0].src;
var loc = theImgSrc.indexOf("?");
if (loc != -1) {
    theImgSrc = theImgSrc.substr(0, loc);
}

您可以在这里看到它的作用:

处理问题的两个部分:

var imgDiv = document.getElementById('imageDiv');

var imgs = imgDiv.getElementsByTagName("img");

var url = "";

if (imgs.length > 0) {
    var img = imgs[0];
    var questionIndex = img.src.indexOf("?");

    if (questionIndex > -1) {
        url = img.src.substring(0, questionIndex);
    } else {
        url = img.src;
    }
}

alert(url);

为什么否决?我本来是错的,但我认为我修改后的答案就足够了。我没有否决,但这在IE6或IE7中不起作用,因为querySelectorAll不受支持。啊,我不知道。该死。我想我很快就要停止支持IE用户了。不是我的否决,但OP也要求删除查询字符串。贝西德是的,如果您使用的是更新、更好的querySelector,那么最好使用
querySelector(“#imageDiv img”)
。此外,querySelectorAll首先是错误的,因为它返回了一个列表。删除All,您就没事了。OP也要求删除querystring。啊,错过了这一部分。只需将代码更改为
getElementById(“您的图像”)
你的最好。这是不正确的。imageDiv是一个包含div的div,而不是图像标记本身。没有投票,但是
imageDiv
没有一个
src
它是一个包含图像的div。因为代码被破坏了…imageDiv上没有“src”属性。getAttribute为我返回null,但innerHTML工作好吗?@jfriend00@kingjiv我明白了。上面更正了。这是不正确的。theImg是一个字符串。你不能在字符串上调用getElementsByTagName。我想你应该删除
innerHTML
,因为我不相信你可以在字符串上调用
getElementsByTagName
。只是缺少了删除查询字符串的部分。它是在你创建时添加的由于这个线程中有太多错误的实现,我想我应该通过在JSFIDLE中验证它来确保我的实现正常工作,这需要花费一些时间。
var imgDiv = document.getElementById('imageDiv');

var imgs = imgDiv.getElementsByTagName("img");

var url = "";

if (imgs.length > 0) {
    var img = imgs[0];
    var questionIndex = img.src.indexOf("?");

    if (questionIndex > -1) {
        url = img.src.substring(0, questionIndex);
    } else {
        url = img.src;
    }
}

alert(url);