php explode不是第二项

时间:2015-06-13 21:29:01

标签: php arrays explode

我试图拆分此图片字符串:$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;字符串的一部分也不在数组中。

1 个答案:

答案 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 ) )