Найдите элемент по id и замените его содержимое на php - PullRequest
4 голосов
/ 04 декабря 2010

Я хочу использовать PHP для поиска в содержимом файла элемента с определенным идентификатором, замены его содержимого и сохранения изменений в файл.Я могу загрузить HTML и снова сохранить его, но у меня проблемы с поиском и заменой (в настоящее время я пытаюсь использовать preg_replace).

Вот что у меня пока есть:

<?php
// read in the content
$file = file_get_contents('file.php');

// parse $file, looking for the id.
$replace_with = "id='" . 'myID' . "'>" . $replacement_content . "<";
if ($updated = preg_replace('/id\=\"myID\"\>.*?\</', $replace_with, $file)) {   
    // write the contents of $file back to index.php, and then refresh the page.
    file_put_contents('file.php', $updated);
}

Однако, хотя он успешно загружает содержимое и записывает его (я проверял это, записывая в отдельный файл), онПохоже, что $ updated на самом деле не меняется.

Есть идеи?

Ответы [ 3 ]

10 голосов
/ 04 декабря 2010

Вы можете использовать PHP DOMDocument для этого:

$html = new DOMDocument(); 
$html->loadHTMLFile('file.php'); 
$html->getElementById('myId')->nodeValue = 'New value';
$html->saveHTMLFile("foo.html");
1 голос
/ 04 декабря 2010

Я думаю, у вас есть проблемы с выходом ;-)

попробуйте это:

$replace_with = 'id="myID">' . $replacement_content . '</';
if ($updated = preg_replace('#id="myID">.*?</#Umsi', $replace_with, $file)) {   
    // write the contents of $file back to index.php, and then refresh the page.
    file_put_contents('file.php', $updated);
}
1 голос
/ 04 декабря 2010

просто думая, почему вы избегаете "=", это должно быть /id=\"myID\"\>.*?\</

...