J'ai créé un plugin WordPress qui insère les attributs width
et height
dans toutes les images, par exemple:
<img src="https://placehold.it/100x50">
- to -
<img src="https://placehold.it/100x50" width="100" height="50">
Cependant, lorsque certaines images ont des dimensions vides (pour width
et height
name__), mon code ne le détecte pas, par exemple:
<img src="https://placehold.it/100x50" width="" height="">
Cependant, quand il n'y a qu'une seule dimension vide, mon plugin le détecte. Les deux exemples suivants fonctionneront:
<img src="https://placehold.it/100x50" width="">
<img src="https://placehold.it/100x50" height="">
Voici le code source . À la ligne 43 ( # ), c’est la logique que j’utilise pour déterminer s’il manque un width
name __/height
dans une image:
if ( ! in_array( 'width', $img[1] ) || ! in_array( 'height', $img[1] ) ) {
J'ai essayé la logique mise à jour suivante, mais cela ne fonctionne pas:
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] ) )
) {
Suis-je dans la bonne zone? Qu'est-ce que je fais mal dans ma logique?
Personnellement, la première chose que je ferais après la mise en correspondance des attributs est de créer un tableau associatif de:
array( 'attribute_name' => 'attribute_value' )
Il sera plus facile d'obtenir l'attribut directement que d'avoir à chercher dans le tableau et je pense que dans l'ensemble, le code sera plus direct. Puisque nous savons que l'index 0 est notre nom d'attribut et que l'index 1 est notre valeur d'attribut, nous pouvons utiliser array_combine () pour créer le format indiqué ci-dessus:
$attributes = array_combine( $img[1], $img[2] );
Enfin, nous pouvons éliminer toutes les valeurs vides du tableau en recherchant la différence, puis en exécutant la condition.
$attributes = array_diff( $attributes, array( '""' ) );
Bien entendu, vous devrez refactoriser votre code pour prendre en compte le nouveau tableau associatif $attributes['src']
et ainsi de suite. Le problème avec votre solution d'origine était que vous recherchiez la valeur dans l'index 1 où vous auriez dû chercher dans l'index 2 (qui contient les valeurs):
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] ) )
) {