2017-01-25 15 views
1

Я создал WordPress plugin, который вставляет width и height атрибуты всех изображений, например:Как поймать изображения с пустыми размерами?

<img src="https://placehold.it/100x50"> 
- to - 
<img src="https://placehold.it/100x50" width="100" height="50"> 

Тем не менее, когда есть изображения, которые имеют размеры заготовки (как для width и height), мой код Безразлично» t не улавливает его, например:

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

Является ли я в нужном районе? Что я делаю неправильно в своей логике?

ответ

0

Я искал значение индекса 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])) 
) { 
0

не приведет ли width="" часть <img ... width=""> результата в строках width и "" в качестве элементов для $img? Который является совпадением, а не пустым, так что ! in_array, вероятно, здесь не так.

Ваш код будет выполнен, если атрибуты ширины и высоты вообще отсутствуют.

Просто проверить конкретные значения матча для любой ширины и высоты, и реагируют так же, как в вашем коде, если он имеет значение строки ""

редактировать: Обновленное логика предполагается две захваченные группы одна строка, но это не так. Поэтому вместо in_array('width=""', $img[1]) вам понадобится (in_array('width', $img[1]) and in_array('""', $img[1])), плюс то же самое для высоты, соответственно.

+0

я вижу, имеет смысл. Я обновил свою логику, когда вы упомянули, что я показал в своем первоначальном вопросе. Тем не менее, он по-прежнему не работает с изображениями с пустыми размерами. Я реализую его неправильно? –