Home  >  Article  >  Backend Development  >  如何读取<img>里的title

如何读取<img>里的title

WBOY
WBOYOriginal
2016-06-23 13:44:441211browse

在下面的函数中,读取了src,请问如何再读取如何读取<img>里的title里的title
function get_pic_list($content='')
{
$pattern="/如何读取<img>里的title/"; 
preg_match_all($pattern,$content,$match); 

$arr_pic = array();
$i = 0;
foreach($match[1] as $imgsrc)
{
$arr_pic[$i]['src'] = $imgsrc;
$i++;
}

return $arr_pic;
}


回复讨论(解决方案)

看看是否这样

function get_pic_list($content=''){    $pattern="/<img .*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?title=[\'|\"](.*?)[\'|\"].*?[\/]? alt="如何读取<img>里的title" >/";     preg_match_all($pattern,$content,$match);     $arr_pic = array();    $i = 0;    for($i=0,$len=count($match[1]); $i<$len; $i++){        $arr_pic[$i]['src'] = $match[1][$i];        $arr_pic[$i]['title'] = $match[2][$i];    }    return $arr_pic;}$content =<<<TXT<a href="#" class="drop_toggle btn_1 " rel='nofollow'><span>  <img src="/assets/ico_set.gif" alt="" title="title1" />管理菜单<img src="/assets/arrow_down.gif" alt="" title="title2" /></span></a>TXT;$result = get_pic_list($content);print_r($result);


Array(    [0] => Array        (            [src] => /assets/ico_set.gif            [title] => title1        )    [1] => Array        (            [src] => /assets/arrow_down.gif            [title] => title2        ))

调用后,显示不正确,我本来上传了很多图片,但是只显示出来两张,而且显示出来这两张我用查看源码时,title的值为空。

在下面的调用页面的JS是不是也要做修改??怎么改??
<script> <br /> $(document).ready(function () { <br /> $(".colorboxEx").each(function (i, el) { <br /> $(el).justifiedGallery({rel: 'gal' + i}).on('jg.complete', function () { <br /> $(this).find('a').colorbox({ <br /> maxWidth : '80%', <br /> maxHeight : '80%', <br /> opacity : 0.8, <br /> transition : 'elastic', <br /> current : '' <br /> }); <br /> }); <br /> }); <br /> }); <br /> </script>


       {foreach from=$album_list item=pic}

如何读取<img>里的title

      {/foreach}

你是否每张图片都有title标记?并且title是放在src后面。

可能不是JS的事,因为我把那段JS删掉,也是一样只显示两张没有title值的图片

没有每张都title,有些有,有些没有

加上title试试。没有的加上title=""

刚刚加上了,也只显示一部分,我试了一下,分别把title的值设为1,2,3,4,5,6,7,8,但是只显示了2,4,6,8

是隔一个显示一个

如果不确定是否每张图都有title标记,需要二次正则获取。
修改如下:

function get_pic_list($content=''){    $pattern="/<img .*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*? alt="如何读取<img>里的title" >/";     preg_match_all($pattern,$content,$match);     $arr_pic = array();    $i = 0;    for($i=0,$len=count($match[1]); $i<$len; $i++){        $arr_pic[$i]['src'] = $match[1][$i];        preg_match('/title=[\'|\"](.*?)[\'|\"]/', $match[0][$i], $match1);        $arr_pic[$i]['title'] = isset($match1[1])? $match1[1] : '';    }    return $arr_pic;}$content =<<<TXT<a href="#" class="drop_toggle btn_1 " rel='nofollow'><span>  <img src="/assets/ico_set.gif" alt="" title="title1" />管理菜单<img src="/assets/arrow_down.gif" alt="" title="title2" />  <img src="/assets/arrow_down123.gif" alt="" /></span></a>TXT;$result = get_pic_list($content);print_r($result);


Array(    [0] => Array        (            [src] => /assets/ico_set.gif            [title] => title1        )    [1] => Array        (            [src] => /assets/arrow_down.gif            [title] => title2        )    [2] => Array        (            [src] => /assets/arrow_down123.gif            [title] =>         ))

如果还有问题,可以把$content发出来看看。

可以了,谢谢

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn