0

我需要用保持相同属性的文本区域替换所有 div 的包含类“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

你只需要一个正则表达式,它看起来像这样:

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

这会找到所有<div>标签,在反向引用 #1 中捕获它们的 ID 属性,在反向引用 #2 中捕获它们的内容。然后,替换很简单:将 替换为<div>具有<textarea>“ta”类且 ID 和内容与原始 相同的<div>

您可以在演示中看到它的工作原理。

于 2012-07-31T19:05:42.063 回答