以下のファイルは、XMPデータを含むPhotoShopの任意のJPGファイルを使用してセットアップできます。'pattern'で、'eat:'を'dc:'または'$string'から返された名前空間に置き換えます。
次の配列設定を使用して$string(1)を呼び出すと、次のようなprint_r配列が生成されます。(2)
上の行(1a)のコメントを外すと、ブラウズに印刷され、下の行(1a)にコピーして貼り付けられます。これにより、次のような配列が生成されます。(3)
同じ文字列であるのに、なぜprint_rの読み取り値が異なるのですか?
(3)のように動作させるにはどうすればよいですか。...さらに良いことに、どうすれば(4)のようになりますか?
<?php
header("Content-Type: text/html; charset=utf-8");
$filename = "2012-04-24_WestCoast_2.jpg";
echo '<img src="'. $filename . '" alt="'. $filename . '" title="' . $filename . '" width="350" /><p />';
$source = file_get_contents($filename);
$xmpdata_start = strpos($source,'<x:xmpmeta');
$xmpdata_end = strpos($source,"</rdf:Description>");
$xmplenght = $xmpdata_end-$xmpdata_start;
$xmpdata = substr($source,$xmpdata_start,$xmplenght+18);
$string = htmlentities($xmpdata); //(1)
//if (is_string($string)) {
// echo "is a string\n"; //TRUE
//} else {
// echo "is not a string\n";
//}
//$string = print_r("'".$string."';");
// (1a)=====================================
//$string = '<x:xmpmeta xmlns: === Truncated for simplicity ===x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"></rdf:Description>';
$pattern = '/eat:(.*?)="(.*?)"/is';
preg_match_all($pattern, $string, $matches);
$group = array($matches[1], $matches[2]);
// foreach($group as &$match);
echo '<pre>';
// print_r ($match);
print_r ($group);
echo '</pre>';
?>
(2)=====================================
//'$stringを呼び出すだけの場合'、これは私が得るものです:
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
(3)=====================================
//(1)のコメントを外すと、ファイル内に貼り付けた「$string」、これを取得します:
Array
(
[0] => Array
(
[0] => Biography
[1] => Title
[2] => object_description
[3] => Medium
[4] => in_height
[5] => in_width
[6] => in_depth
[7] => Dated
[8] => Photograph
)
[1] => Array
(
[0] => American B1942 Castine, Maine
[1] => Reunion Dinner Party at the Slanted Door
[2] => Nancy Freeman, Tim Patterson The Slanted Door San Francisco Calf.
[3] => photography
[4] => 2736
[5] => 3648
[6] => @ 240 dpi
[7] => April 24, 2012
[8] => PrimaryImage
)
)
(4)=====================================
//これは私がしようとしていることですあまりにも取得:
Biography: American B1942 Castine, Maine
Title: Reunion Dinner Party at the Slanted Door
object_description: Reunion Dinner Party at the Slanted Door
Nancy Freeman, Tim Patterson The Slanted Door San Francisco Calf.
Medium: photography
in_height: 2736
in_width: 3648
in_depth: @ 240 dpi
Dated: April 24, 2012
Photograph: PrimaryImage