1

htmlファイルの内容をphpで変更したいです。img タグにスタイルを適用しています。タグにすでにスタイル属性があるかどうかを確認する必要があります。ある場合は、独自のものに置き換えたいと考えています。

$pos = strpos($theData, "src=\"".$src."\" style=");
    if (!$pos){
        $theData = str_replace("src=\"".$src."\"", "src=\"".$src."\" style=\"width:".$width."px\"", $theData);
    }
    else{
        $theData = preg_replace("src=\"".$src."\" style=/\"[^\"]+\"/", "src=\"".$src."\" style=\"width: ".$width."px\"", $theData);
    }

$theData は、受け取った html ソース コードです。スタイル属性が見つからない場合は、独自のスタイルを正常に挿入できますが、スタイル属性が既に定義されているため、正規表現が機能しない場合に問題が発生すると思います。

スタイル属性をその中のすべてのもの、新しいスタイル属性に置き換えたいと思います。私の正規表現はどのように見えるべきですか?

4

4 に答える 4

1

Here is the regexp variant of solving this problem:

<?php
$theData = "<img src=\"/image.png\" style=\"lol\">";
$src = "/image.png";
$width = 10;

//you must escape potential special characters in $src, 
//before using it in regexp
$regexp_src = preg_quote($src, "/");

$theData = preg_replace(
    '/src="'. $regexp_src .'" style=".*?"/i',
    'src="'. $src .'" style="width: '. $width . 'px;"',
    $theData);

print $theData;

prints:

<img src="/image.png" style="width: 10px;">
于 2013-06-19T08:50:46.893 に答える
0

正規表現:

(<[^>]*)style\s*=\s*('|")[^\2]*?\2([^>]*>)

使用法:

$1$3

例:

http://rubular.com/r/28tCIMHs50

于 2013-06-19T08:28:29.080 に答える