0

固定:啊哈,只需更换

*.?

为了

.*?

它起作用了;p


我做了一个函数但似乎不起作用,我认为是因为转义是错误的,你们可以检查一下吗?

function clearPage($content, $id) {
$arr = array(
            "@(*.?)<div id=\"$id\">(*.?)<\/div>(*.?)@i" => "<div id=\"$id\">$2</div>"
            );

    return preg_replace(array_keys($arr), array_values($arr), $content);


}

请忽略其目的而专注于数组?

4

1 回答 1

0

如果您确定没有嵌套 div,则可以使用以下语法:

'@(.*?)<div id="' . $id. '">(.*?)</div>(.*?)@is'

注意使用单引号来避免转义双引号,并使用 s 修饰符来允许点匹配换行符。您不必转义斜杠,因为您不使用斜杠作为分隔符。

注意:在您的情况下,使用正则表达式是一种非常糟糕的方式,特别是因为您有一个可以轻松与 DOMDocument 一起使用的 id。

于 2013-06-28T17:30:22.947 回答