我试图拆分此图片字符串:$output = "<img typeof="foaf:Image" src="http://asite.dev/sites/default/files/video/MBI_Part%201_v9.jpg" width="1920" height="1080" alt="" />
我这样做:$split = explode('"', $output);
但当我print_r($split);
它返回时:
Array ( [0] => typeof="foaf:Image" [2] => src="http://makingitcount.dev/sites/default/files/video/MBI_Part%201_v9.jpg" [3] => width="1920" [4] => height="1080" [5] => alt="" [6] => /> )
没有第二个价值!去哪里了?当然,split[1]
会抛出错误。我还注意到&#34; <img
&#34;字符串的一部分也不在数组中。
答案 0 :(得分:0)
问题源于解析html标签。如果您删除html字符串开头的<img
,您会注意到其余属性将解析为具有正确数字序列的数组(包括&#39; 1&#39;元素)。您可以通过格式化引号来告诉php不要解析html并将整个单元严格地视为字符串来解决您的问题。
如果你想绕过这整个混乱,你也可以使用正则表达式匹配来收集标记信息并将其传递给数组。 $ matches [0] [*]将包含所有标记属性,$ matches [1]包含标记本身(img)
$output = '<img typeof="Image" src="http://asite.dev/sites/default/files/video/MBI_Part%201_v9.jpg" width="1920" height="1080" alt="" />';
$pattern = '( \w+|".*?")';
preg_match_all($pattern, $output, $matches);
preg_match("[\w+]",$output,$matches[1]);
print_r($matches);
给你
Array ( [0] => Array ( [0] => typeof [1] => "Image" [2] => src [3] => "http://asite.dev/sites/default/files/video/MBI_Part%201_v9.jpg" [4] => width [5] => "1920" [6] => height [7] => "1080" [8] => alt [9] => "" )
[1] => Array ( [0] => img ) )