2017-01-27 14 views
1

私は<img>タグは寸法(width/height)が不足していたときに検証しif文を持っているか、彼らは例えば(width=""/height="")、空白の場合:この「if」文を簡略化できますか?

<img src="https://placehold.it/100x50" alt="Blank width/height" width="" height=""> 
<img src="https://placehold.it/100x50" alt="Blank width" width=""> 
<img src="https://placehold.it/100x50" alt="Blank height" height=""> 
<img src="https://placehold.it/100x50" alt="No width/height"> 

if次の文は私のために動作します。しかし、以下で使用しているロジックを単純化することが可能かどうかを知りたかったのです。 Here's the link to the full source code

if (
    # There is no width 
    ! in_array('width', $img[1]) || 
    # There is no height 
    ! in_array('height', $img[1]) || 
    # The width is blank (width="") 
    (in_array('width', $img[1]) && in_array('""', $img[2])) || 
    # The height is blank (height="") 
    (in_array('height', $img[1]) && in_array('""', $img[2])) 
) { 
# Code here... 
} 
+1

は 'のためにそれができません$ img [2] 'には幅や高さに対応しない' ''が含まれていますか? (例えば、 "alt"の中の "" "") – apokryfos

+2

http://codereview.stackexchange.com/ – zurfyx

+0

@apokryfosに移動する必要があります。 –

答えて

0

に失敗:

if (! in_array('width|height', $img[1]) || in_array('""', $img[2])) { 
    # Code here... 
} 
0
$search = ['width','height']; 
foreach ($search as $value) { 
    if(!in_array($value, $img[1]) || (in_array($value, $img[1]) && in_array('""', $img[2])) { 
     // code away 
    } 
} 

それともあなたは常にあなたの定義された要素のプロパティを確認、あるいはむしろ、インラインスタイルを使用するよりもCSSの幅と高さを定義するためにjQueryを使用することができます。

+0

質問を単純化するための私の試みを更新しました。あなたはどう思いますか? –

0

はい、すべてのチェックを1つの関数でエクスポートします。ここでは、それぞれの単一の条件をチェックし、対応する値を返します。諺にしたよう:早期

失敗、私は次の操作を実行して、ロジックを簡素化することができた速い

if(illegalImage($img)) { 
// Code here ... 
} 

private function illegalImage(array $imgData) { 
    // check the array since we're in a validation function, so be thorough 
    if (count($imgData) < 3) { // or whatever check makes sense here 
     return true; 
    } 
    if (!in_array('width', $imgData[1])) { 
     return true; 
    } 
    if (!in_array('height', $imgData[1])) { 
     return true; 
    } 
    /* you'd have failed earlier if 'width' or 'height' was missing 
    * so no need of complicated boolean expressions here 
    */ 
    if (in_array('""', $img[2])) { 
     return true; 
    } 

    return false; 
} 
+0

私はそれのために全く新しい機能を作り出しているので、それはそれを大きくしていませんか? –

+0

これは読みやすく、維持しやすく、拡張することができます。私の書籍には大きなプラスがあります。数か月後にもう一度見直したり、別の条件を追加する必要があります。 – Havelock

関連する問題