preg_match个具体内容
preg_match a specific content
我对正则表达式一窍不通,需要帮助。我尝试了很多东西,但无法得到我需要的东西。
<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234"/>
在此代码 src, title, alt, width 和 height 可以有不同的值。但是,itemprop 是一个常量,源中有一张图像具有此属性。我怎样才能用 PHP 得到它?
如果我的主题重复,很抱歉,我真的找不到解决方案。
您可以使用这个正则表达式:
%<img\s+src="(.*?)"\s+title="(.*?)"\s+alt="(.*?)"\s+itemprop="(.*?)"\s+width="(.*?)"\s+height="(.*?)"\s*?/>%
示例:
<?php
$myImage = '<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234"/>';
preg_match_all('%<img\s+src="(.*?)"\s+title="(.*?)"\s+alt="(.*?)"\s+itemprop="(.*?)"\s+width="(.*?)"\s+height="(.*?)"\s*?/>%sim', $myImage, $matches, PREG_PATTERN_ORDER);
$src= $matches[1][0];
$title= $matches[2][0];
$alt= $matches[3][0];
$itemprop= $matches[4][0];
$width= $matches[5][0];
$height= $matches[6][0];
echo $src."\n";
echo $title."\n";
echo $alt."\n";
echo $itemprop."\n";
echo $width."\n";
echo $height."\n";
输出:
http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg
Maske (1994) afişi
Maske (1994) afişi
image
164
234
演示:
根据您的评论更新:
$html = file_get_contents("http://www.sinemalar.com/film/1000/maske");
preg_match_all('%<img src="(.*?)" alt="(.*?)" width="(.*?)" height="(.*?)" />%i', $html, $matches, PREG_PATTERN_ORDER);
$src= $matches[1][0];
$alt= $matches[2][0];
$width= $matches[3][0];
$height= $matches[4][0];
echo $src."\n";
echo $alt."\n";
echo $width."\n";
echo $height."\n";
输出:
http://simg02.imgsinemalar.com/img/sinemalarlogo.png
Sinemalar.com
211
51
注:
您应该使用 php DOMDocument 来解析 html 而不是正则表达式。
如果你想得到整个<img>
节点,你可以使用DOM和XPath:
<?php
$dom = new DOMDocument;
$dom->loadHTMLFile("http://www.sinemalar.com/film/1000/maske");
$xp = new DOMXPath($dom);
$qry = "//img[@itemprop='image']";
$result = $xp->query($qry)->item(0);
// To print it
$newdoc = new DOMDocument();
$cloned = $result->cloneNode(TRUE);
$newdoc->appendChild($newdoc->importNode($cloned,TRUE));
echo $newdoc->saveHTML();
?>
它将打印(连同一些警告):
<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234">
我对正则表达式一窍不通,需要帮助。我尝试了很多东西,但无法得到我需要的东西。
<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234"/>
在此代码 src, title, alt, width 和 height 可以有不同的值。但是,itemprop 是一个常量,源中有一张图像具有此属性。我怎样才能用 PHP 得到它?
如果我的主题重复,很抱歉,我真的找不到解决方案。
您可以使用这个正则表达式:
%<img\s+src="(.*?)"\s+title="(.*?)"\s+alt="(.*?)"\s+itemprop="(.*?)"\s+width="(.*?)"\s+height="(.*?)"\s*?/>%
示例:
<?php
$myImage = '<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234"/>';
preg_match_all('%<img\s+src="(.*?)"\s+title="(.*?)"\s+alt="(.*?)"\s+itemprop="(.*?)"\s+width="(.*?)"\s+height="(.*?)"\s*?/>%sim', $myImage, $matches, PREG_PATTERN_ORDER);
$src= $matches[1][0];
$title= $matches[2][0];
$alt= $matches[3][0];
$itemprop= $matches[4][0];
$width= $matches[5][0];
$height= $matches[6][0];
echo $src."\n";
echo $title."\n";
echo $alt."\n";
echo $itemprop."\n";
echo $width."\n";
echo $height."\n";
输出:
http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg
Maske (1994) afişi
Maske (1994) afişi
image
164
234
演示:
根据您的评论更新:
$html = file_get_contents("http://www.sinemalar.com/film/1000/maske");
preg_match_all('%<img src="(.*?)" alt="(.*?)" width="(.*?)" height="(.*?)" />%i', $html, $matches, PREG_PATTERN_ORDER);
$src= $matches[1][0];
$alt= $matches[2][0];
$width= $matches[3][0];
$height= $matches[4][0];
echo $src."\n";
echo $alt."\n";
echo $width."\n";
echo $height."\n";
输出:
http://simg02.imgsinemalar.com/img/sinemalarlogo.png
Sinemalar.com
211
51
注:
您应该使用 php DOMDocument 来解析 html 而不是正则表达式。
如果你想得到整个<img>
节点,你可以使用DOM和XPath:
<?php
$dom = new DOMDocument;
$dom->loadHTMLFile("http://www.sinemalar.com/film/1000/maske");
$xp = new DOMXPath($dom);
$qry = "//img[@itemprop='image']";
$result = $xp->query($qry)->item(0);
// To print it
$newdoc = new DOMDocument();
$cloned = $result->cloneNode(TRUE);
$newdoc->appendChild($newdoc->importNode($cloned,TRUE));
echo $newdoc->saveHTML();
?>
它将打印(连同一些警告):
<img src="http://img03.imgsinemalar.com/images/afis_buyuk/m/Maske.jpg" title="Maske (1994) afişi" alt="Maske (1994) afişi" itemprop="image" width="164" height="234">