5

OK、DOM パーサーを使用する必要があることはわかっていますが、これは後の機能の概念実証となるコードをスタブ化するためのものなので、限られた一連のテスト コードでいくつかの機能をすばやく取得したいと考えています。

チャンクHTMLの幅と高さの属性を削除しようとしています。つまり、置き換えようとしています

width="number" height="number"

空文字列で。

私が書こうとしている関数は、現時点では次のようになります。

function remove_img_dimensions($string,$iphone) {
    $pattern = "width=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    $pattern = "height=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    return $string;
}

しかし、それはうまくいきません。

どうすればそれを機能させることができますか?

4

3 に答える 3

7

PHPは、Python、Java、C#のように正規表現が文字列リテラルの形式で指定されているという点で主要言語の中でユニークですが、Perl、JavaScript、Rubyのように正規表現区切り文字も使用する必要があります。

また、二重引用符や円記号などの文字をエスケープする必要性を減らすために、二重引用符の代わりに一重引用符を使用できることにも注意してください。二重引用符で囲まれた文字列のエスケープルールは驚くべきものになる可能性があるため、これを理解するのは良い習慣です。

最後に、簡単な変更を行うことで、2つの置換を1つに組み合わせることができます。

$pattern = '/(width|height)="[0-9]*"/i';
于 2009-04-22T18:31:54.583 に答える
4

パターンには開始/終了パターン文字が必要です。このような:

$pattern = "/height=\"[0-9]*\"/";
$string = preg_replace($pattern, "", $string);

"/" は通常の文字ですが、ほとんどの文字が機能します ("|pattern|"、"#pattern#" など)。

于 2009-04-22T14:54:21.253 に答える
0

文字列内の正規表現を囲む必要がある括弧 (//、||、またはその他のさまざまな文字のペア) が欠落していると思います。$pattern の割り当てを次の形式に変更してみてください。

$pattern = "/width=\"[0-9]*\"/";

...大文字と小文字を区別しない比較を実行できるようにする場合は、文字列の末尾に「i」を追加します。次のようにします。

$pattern = "/width=\"[0-9]*\"/i";

お役に立てれば!デビッド

于 2009-04-22T15:01:03.233 に答える