で試しました
$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);
空の配列を返しますが、html部分のみを取得してRubular でテストすると、正しい出力が得られます.理解するのを手伝ってください
で試しました
$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);
空の配列を返しますが、html部分のみを取得してRubular でテストすると、正しい出力が得られます.理解するのを手伝ってください
これを試して:
/\<img.*?id\=["\']zoom1["\'].*?src\=["\'](.+?)["\'][\s]{0,}.*?\/{0,1}\>/ims
false が返された場合、次のことを試みます。
/\<img.*?src\=["\'](.+?)["\'][\s]{0,}.*?id\=["\']zoom1["\'].*?\/{0,1}\>/ims
.
基本的に、正規表現は id と src の順序に大きく依存します。
ただし、ここでは html を扱っているため、代わりに DOM/XPath を使用することをお勧めします。
代わりに DOM を使用する必要があります。
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$src = $xpath->query('//img[@id="zoom1"]')->item(0)->getAttribute('src');
本当にとても簡単で、正しい使用方法 =)