0

imgタグを置き換える必要があります。元のタグは次のとおりです。

<img src="index.php?act=img&amp;sub=article&id=35558" width="150" height="172">

それから私はそれをに置き換えたい:

<img src="index.php?act=img&amp;sub=article&amp;id=35558" style="width: 150px; height: 172"/> 

srcのIDは変更可能です。
適切なパターンを定義する方法がわかりません。いくつか試しましたが、うまくいきませんでした。

4

4 に答える 4

2

正規表現は、この種のことには適切なツールではありません。単純なものを解析するときは正規表現を使用する必要があります。HTMLはとにかく正規言語ではありません。

PHPを使用したHTMLの解析に関するこの記事をお読みください

于 2012-07-04T07:47:54.720 に答える
1

これは機能するはずです:

$img1 = '<img src="index.php?act=img&amp;sub=article&id=35558" width="150" height="172">';
$img2 = preg_replace('/\<img([^>]+)(width|height)="(\d+)"([^>]*)(width|height)="(\d+)"([^>]*)\>/i', '<img$1 style="$2:$3px;$5:$6px"$4$7>', $img1);

ここでは、パラメーター(または追加)の順序は重要ではありません。

于 2012-07-04T08:16:51.683 に答える
0

preg_matchを使用してタグを再構築できるように、正規表現パターンを探していると思いますか?その場合、このようなものは次のようになります。

preg_match('/ src = "(。+?)"。+?width = "(。+?)"。+?height = "(。+?)" / i'、$ str、$ matches);

ただし、これらの属性の順序が変更され始めると、この正規表現は機能しなくなります。可能であれば、PHPを介してHTMLを解析することをお勧めします。

于 2012-07-04T07:51:31.477 に答える
0

これは望み通りに機能します:Pしかし、目的を果たすために正規表現を使用することはお勧めしません。

<?php
$string = '<img src="index.php?act=img&amp;sub=article&id=35558" width="150" height="172">';
echo $resultString = preg_replace(array('/\&id\b/i','/width="150" height="172"/i'), array('&amp;id','style="width: 150px; height: 172"'), $string); 
于 2012-07-04T07:55:57.593 に答える