$img = '<img src="http://some-img-link" alt="some-img-alt"/>'; $src = preg_match('/<img src=\"(.*?)\">/', $img); echo $src;
Я хочу получить значение src
из тега img и, возможно, значение alt
Предполагая, что вы всегда получаете img html, как вы показали в вопросе.
Теперь в регулярном выражении вы указали свое высказывание, что после атрибута src ему задан закрытый тег для img. Но в строке есть атрибут alt. Поэтому вам также нужно заботиться об этом.
/<img src=\"(.*?)\".*\/>/
И если вы собираетесь проверить alt также регулярное выражение.
/<img src=\"(.*?)\"\s*alt=\"(.*?)\"\/>/
Также вы просто проверяете, соответствует ли он или нет. Если вам нужно получить матчи, вам нужно предоставить третий параметр preg_match, который будет заполняться совпадениями.
$img = '<img src="http://some-img-link" alt="some-img-alt"/>'; $src = preg_match('/<img src=\"(.*?)\"\s*alt=\"(.*?)\"\/>/', $img, $results); var_dump($results);
Примечание. Вышеупомянутое регулярное выражение не является таким общим, если вы можете предоставить строки img, которые произойдут, обеспечит более сильное регулярное выражение.
function scrapeImage($text) { $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/'; preg_match($pattern, $text, $link); $link = $link[1]; $link = urldecode($link); return $link; }
Протестированный код:
$ input='<img src= ”http://www.site.com/file.png” > '; preg_match(“<img.*?src=[\"\"'](?<url>.*?)[\"\"'].*?>”,$input,$output); echo $output; // output = http://www.site.com/file/png
Как извлечь img src, title и alt из html с помощью php?
См. Первый ответ на этот пост.
Вы собираетесь использовать preg_match, совсем немного иначе.
Попробуйте этот код:
<?php $doc = new DOMDocument(); $doc->loadHTML('<img src="" />'); $imageTags = $doc->getElementsByTagName('img'); foreach($imageTags as $tag) { echo $tag->getAttribute('src'); } ?>
Также вы можете использовать эту библиотеку: SimpleHtmlDom
<?php $html = new simple_html_dom(); $html->load('<html><body><img src="image/profile.jpg" alt="profile image" /></body></html>'); $imgs = $html->find('img'); foreach($imgs as $img) print($img->src); ?>
preg_match('/<img src=\("|')([^\"]+)\("|')[^\>]?>/', $img);
У вас уже есть достаточно хорошие ответы выше, но вот еще один код (более универсальный):
function retrieve_img_src($img) { if (preg_match('/<img(\s+?)([^>]*?)src=(\"|\')([^>\\3]*?)\\3([^>]*?)>/is', $img, $m) && isset($m[4])) return $m[4]; return false; }
Вы можете использовать JQuery для получения атрибутов src и alt
включить jquery в заголовке
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script>
// HTML
// для получения атрибутов src и alt
<script type='text/javascript'> // src attribute of first image with id =imgId var src1= $('#imgId1').attr('src'); var alt1= $('#imgId1').attr('alt'); var src2= $('#imgId2').attr('src'); var alt2= $('#imgId2').attr('alt'); </script>