如何捕捉空白尺寸的图像?

时间:2017-01-25 作者:Ethan O\'Sullivan

我创建了一个WordPress plugin 插入widthheight 所有图像的属性,例如:

<img src="https://placehold.it/100x50">
- to -
<img src="https://placehold.it/100x50" width="100" height="50">
然而,当存在具有空白尺寸的图像时(对于两者widthheight), 我的代码没有捕捉到它,例如:

<img src="https://placehold.it/100x50" width="" height="">
然而,当只有一个空白维度时,我的插件会捕获它。以下两个示例将起作用:

<img src="https://placehold.it/100x50" width="">
<img src="https://placehold.it/100x50" height="">
Here\'s the source code. 在线43(#), 这是我用来确定图像是否缺少width/height:

if ( ! in_array( \'width\', $img[1] ) || ! in_array( \'height\', $img[1] ) ) {
我尝试了以下更新的逻辑,但不起作用:

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[1] ) ) || ( in_array( \'height\', $img[1] ) && in_array( \'""\', $img[1] ) )
) {
我在正确的区域吗?我在逻辑上做错了什么?

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

就我个人而言,匹配属性后我要做的第一件事是创建一个关联数组:

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] ) )
) {

相关推荐

Remove <p></p> after images

我对<p></p> 出现在my之后的标记<img....>. 以下是我在本地主机上查看生成的页面时显示的内容。。。<img src=\"/wp-content/themes/wunderful/assets/images/feedback-danielle.png\" alt=\"Danielle Johnson Deal Town FC Treasurer\"> <p></p> 请注意随机生成的<p>&