0

で試しました

$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);

空の配列を返しますが、html部分のみを取得してRubular でテストすると、正しい出力が得られます.理解するのを手伝ってください

4

2 に答える 2

2

これを試して:

/\<img.*?id\=["\']zoom1["\'].*?src\=["\'](.+?)["\'][\s]{0,}.*?\/{0,1}\>/ims

false が返された場合、次のことを試みます。

/\<img.*?src\=["\'](.+?)["\'][\s]{0,}.*?id\=["\']zoom1["\'].*?\/{0,1}\>/ims

.

基本的に、正規表現は id と src の順序に大きく依存します。

ただし、ここでは html を扱っているため、代わりに DOM/XPath を使用することをお勧めします。

于 2013-04-25T12:33:06.490 に答える
1

代わりに DOM を使用する必要があります。

$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);

$src = $xpath->query('//img[@id="zoom1"]')->item(0)->getAttribute('src');

本当にとても簡単で、正しい使用方法 =)

于 2013-04-25T12:36:49.477 に答える