Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP替换html的一部分_Php_Html_Regex - Fatal编程技术网

用PHP替换html的一部分

用PHP替换html的一部分,php,html,regex,Php,Html,Regex,我正试图用PHP中的正则表达式替换模板HTML文件的一部分。到目前为止,我有: $docText = OLD_TEXT; $text = NEW_TEXT; $docText = preg_replace('#<div id="information">[<div>(?R)</div>]*</div>#i x U', $text, $docText,

我正试图用PHP中的正则表达式替换模板HTML文件的一部分。到目前为止,我有:

$docText = OLD_TEXT;
$text = NEW_TEXT;
$docText = preg_replace('#<div id="information">[<div>(?R)</div>]*</div>#i x U',
                         $text,
                         $docText,
                         1);

// Save file
$docText=旧文本;
$text=新文本;
$docText=preg#U replace(“#[(?R)]*#i x U”,
$text,
$docText,
1);
//保存文件

目前它没有任何匹配。目标是让它替换整个外部div,这意味着它需要知道所有其他的都不是结束标记

我不确定你想要什么,但我认为你正在尝试这样做:

$html = <<<HTML
<html>
    <head></head>
    <body>
        <div id="information">
            <div>Hi!</div>
        </div>
        <div id="otherInformation">Hi again!</div>
    </body>
</html>
HTML;

$replace = '<div id="newInformation">Bye!</div>';

$dom    = new DOMDocument();
$dom->loadHTML($html);

$tmp     = $dom->createTextNode('{newContent}');

$xpath   = new DOMXPath($dom);

$divInformation = $xpath->query('//div[@id="information"]');
$divInformation->item(0)->parentNode->replaceChild($tmp, $divInformation->item(0));

$newHTML = str_replace('{newContent}', $replace, $dom->saveHTML());
var_dump($newHTML);
$html=loadHTML($html);
$tmp=$dom->createTextNode(“{newContent}”);
$xpath=newdomxpath($dom);
$xpath->query('//div[@id=“information”]');
$divInformation->item(0)->parentNode->replaceChild($tmp,$divInformation->item(0));
$newHTML=str_replace('{newContent}',$replace,$dom->saveHTML());
var_dump($newHTML);

我能问一下原因吗?

你能举一个$text的例子吗?几周后的第一个问题是,它至少是相关的,但没有人发布愚蠢的链接。--所以,嗯。它必须是正则表达式吗?还是允许更简单的建议?——无论如何,您的
?R
语法并将其作为字符类封装是错误的。你在哪里找到的?简单的选择就可以了。我最初尝试了DOMDocument,但之后没有成功,我决定尝试直接使用字符串。对不起,如果我应该发布一个链接。这是我第一次在StackOverflow上发布。我正在尝试创建一个内容管理系统。到目前为止,我已经让我的网站将标签中的信息复制到文本区域。然后我将其发送到php页面,该页面用新信息替换信息区域。我觉得我可能在重新发明轮子,但这在我的头脑中是有意义的。那么,坚持呢?我想你用的是数据库吧?这就是为什么你在
文本区
中回显内容来发布和存储它吗?几个月后,我刚刚查看了这篇文章。经过大量的工作,我终于得到了这项工作感谢Fy-;然而,从那以后我又做了另一个站点,我使用了MYSQL数据库。太容易了!我通过替换模板中的一些文本为每个动态页面创建了一个全新的文件(我问自己为什么现在这样做),但是MYSQL让这变得容易多了。哦,好吧,最后一切都很顺利。吸取的教训。