1

私のコード:

    $css="
    .class1{
        padding:10px 15px 0 auto;
        padding:10px 150px 0 20px;
        padding:13px 30px 10px 50px;
        padding:24px 1px 0 -20px;
    }
    ";

以下の関数は、[padding:] と [;] の間のコンテンツを抽出します

    function extract_unit($css, $start, $end){
    $pos = stripos($css, $start);
    $str = substr($css, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $unit = trim($str_three); // remove whitespaces
    echo $unit;
    return $unit;
    }

    echo extract_unit($css , 'padding:',';');

出力: 10px 15px 0 自動

この関数を使用して配列内のすべてのパディングを抽出するにはどうすればよいですか..したがって、結果は次のようになる必要があります:

    array(
    "10px 15px 0 auto",
    "10px 150px 0 20p",
    "13px 30px 10px 50px",
    "24px 1px 0 -20px"
    );
4

2 に答える 2

3

これには正規表現を使用できます

preg_match_all("/padding:(.*);/siU",$css,$output);

print_r($output[1]);

デモ

于 2012-05-20T08:07:02.847 に答える
3

爆発はいくつかのトリックを行うことができます:

// first get content inside class{} and remove "padding:"
$parts = explode( "{", $css );
$parts = str_replace( "padding:" , "", explode( "}", $parts['1'] ) );

// now break it with ';'
$padding = explode( ";", $parts['0'] );

ここでテスト

于 2012-05-20T08:13:54.653 に答える