2009-04-22 17 views
5

OK、私はDOMパーサを使うべきだと知っていますが、これは後の機能の概念の証明であるいくつかのコードを抜き出すためです。テストコードの限られたセットPHPの正規表現を使用してHTML属性を置き換える

私は幅と高さを取り除くしようとしているが、チャンクの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; 
} 

をしかし、それは動作しません:

機能

私は、現時点では、このようなルックスを書くしようとしています。

どのようにすればいいですか?

答えて

7

PHPは、正規表現がPython、Java、C#などの文字列リテラルの形式で指定されていますが、Perl、JavaScript、Rubyなどの正規表現の区切り文字も使用する必要があります。

二重引用符の代わりに一重引用符を使用すると、二重引用符やバックスラッシュなどの文字をエスケープする必要がなくなります。二重引用符で囲まれた文字列のエスケープルールは驚くべきことであるため、ここに入るのは良い習慣です。

最後に、あなたは簡単な交代によって一つに、あなたの2個の置換を組み合わせることができます。

$pattern = '/(width|height)="[0-9]*"/i'; 
+0

パーフェクト - どうもありがとう! –

4

パターンには開始/終了パターン文字が必要です。 ( "|パターン|"、 "#パターン#"、何でも)

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

"/" 通常の文字ですが、ほとんどの文字が働くだろう:このように。

0

文字列内の正規表現を囲む必要がある括弧(//、||またはその他のさまざまな文字のペア)が不足していると思います。このフォームにあなたの$パターンの割り当てを変更してみてください:

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

...あなたは「私は」は、文字列の末尾に追加し、大文字と小文字を区別しない比較を行うことができるようにしたい場合:

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

希望します。 David

関連する問題