就我个人而言,匹配属性后我要做的第一件事是创建一个关联数组:
array( \'attribute_name\' => \'attribute_value\' )
这将使直接获取属性比搜索数组更容易,我认为总体而言,这将使代码更直接。因为我们知道索引0是我们的属性名称,索引1是我们的属性值,所以我们可以使用
array_combine() 要创建上面列出的格式,请执行以下操作:
$attributes = array_combine( $img[1], $img[2] );
最后,我们可以通过查找差异从数组中去掉任何空值,然后运行条件。
$attributes = array_diff( $attributes, array( \'""\' ) );
当然,上述情况下,您必须重构代码,以考虑新的关联数组
$attributes[\'src\']
等等原始解决方案的问题是,您正在搜索1索引中的值,而您应该在2索引中查找该值(其中包含值):
if ( # Images with no width/height
! in_array( \'width\', $img[1] ) || ! in_array( \'height\', $img[1] ) ||
# Images with blank width/height
( in_array( \'width\', $img[1] ) && in_array( \'""\', $img[2] ) ) || ( in_array( \'height\', $img[1] ) && in_array( \'""\', $img[2] ) )
) {