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

演示:

http://ideone.com/tENd2b


根据您的评论更新:

$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&#351;i" alt="Maske (1994) afi&#351;i" itemprop="image" width="164" height="234">  

Demo