【发布时间】:2011-06-17 22:31:38
【问题描述】:
是否可以编写一个正则表达式来替换<div id=”somevalue123” class=”text-block”> 和</div> 之间的所有内容?我可以这样做,但我遇到的问题是字符串中还有其他 div 节点。
这是我正在使用的当前正则表达式:
public static function replaceStringBetween($start, $end, $new, $source, $limit = 1)
{
// Reinitialize the replacement count
self::$replacement_count = 0;
// Try to perform the replacement
$result = preg_replace('#('.preg_quote($start) . ')(.*)('.preg_quote($end)
. ')#is', '$1' . $new . '$3', $source, $limit, $count);
if ($count > 0)
{
self::$replacement_count++;
return $result;
}
// As a fallback, try again with a different method
$result = preg_replace ("#{$start}(.*){$end}#is", $new, $source, $limit, $count);
if ($count > 0)
{
self::$replacement_count++;
return $result;
}
// Return the original
return $source;
}
当然,我正在传递一个 HTML 文件作为源文件。 谢谢
【问题讨论】:
-
最好使用适当的 XML 解析器。