0

すべてのdivのcontainigクラス「ta」とid「ta_somenumber」を、同じ属性を保持するテキストエリアに置き換える必要があります。コード例は次のとおりです。

$html_content = '<div class="ta" id="ta_345">sometext</div><span style="...">Some text</span><--!more html--><div class="ta" id="ta_5687">sometext</div>';

これが私が達成したいことです:

$html_new_content = '<textarea class="ta" id="ta_345">sometext</textarea><span style="...">Some text</span><--!more html--><textarea class="ta" id="ta_5687">sometext</textarea>';

私はこれを試していました:

$regex1 = '#\<div class=\"ta\" id=\"(.*)\"\>(.+?)\<\/div\>#s';
$regex2 = '#\<textarea class=\"ta\" id=\"(.*)\"\>(.+?)\<\/textarea\>#s';

$result = str_replace($regex2, $regex3, $html_content);

しかし、何らかの理由でこれは機能しません。preg_replace を試してみましたが、うまくいきませんでした。

4

1 に答える 1

2

必要な正規表現は 1 つだけで、次のようになります。

$regex = '#<div class="ta" id="([^"]+)">(.+?)</div>#s';
$result = preg_replace( $regex, 
    '<textarea class="ta" id="$1">$2</textarea>', 
    $html_content
);

これにより、すべての<div>タグが検索され、ID 属性が後方参照 #1 に、コンテンツが後方参照 #2 に取り込まれます。次に、置き換えは簡単です。を、「ta」クラスを持ち、元の と同じ ID と内容を<div>持つ aに置き換えます。<textarea><div>

デモで動作することがわかります。

于 2012-07-31T19:05:42.063 に答える