내 문서의 head
에 많은 데이터가 있지만 더 많은 데이터를 추가하려고합니다. 그렇다면 PHP::DOMDocument을 사용하여 <head>
태그의 내용을 대체하려면 어떻게해야합니까?PHP :: DOMDocument를 사용하여 요소의 내용을 대체하려면 어떻게해야합니까?
나는 다음과 같은 코드가 있습니다
$dom = new DOMDocument('1.0', 'UTF-8');
@$dom->loadHTML($page);
$head = $dom->getElementsByTagName('head');
$keywords = new DOMElement('meta');
keywords->setAttribute('name', 'keywords');
$keywords->setAttribute('content', $page_def['keywords']);
$head->appendChild($keywords);
$description = new DOMElement('meta');
$description->setAttribute('name', 'description');
$description->setAttribute('content', $page_def['description']);
$head->appendChild($description);
$page = $dom->saveHTML();
page::dump($page);return;
을하지만 오류가 발생합니다 : 정의되지 않은 메서드 DOMText ::의 setAttribute()를 호출
편집 : 나는 매우 것을보고 감아 PHP를 사용하기가 어렵습니다 : DOMDocument. 이 경우, 다음 코드를 사용 :
// Add the small meta data set to the header
$page = utility::replaceStringBetween('<head>', '</head>', $header . $headers, $page);
if (utility::getReplacementCount() == 0)
{
$error = "During page write: The head tags could not be modified within your page";
if (settings::getConfig('context') == 'production')
{
if (settings::getConfig('log_enabled') == 'true')
{
dblog::insert(user::getId(), $error, 'error');
}
}
// So the live pages will display correctly, unset the merge mode since the process which unsets it will fail to execute
if (isset($_SESSION['merge_mode'])) unset($_SESSION['merge_mode']);
print $error;
return;
}
/**
* Replace the value between two other values in a string
*
* @param string start delimeter
* @param string end delimeter
* @param string replacement
* @param string original source
* @param int limit replacement count
* @return string
*/
public static function replaceStringBetween($start, $end, $new, $source, $limit = 1)
{
$result = preg_replace('#('.preg_quote($start) . ')(.*)('.preg_quote($end)
. ')#is', '$1' . $new . '$3', $source, $limit, $count);
if ($count > 0)
{
self::$replacement_count++;
return $result;
}
$result = preg_replace ("#{$start}(.*){$end}#is", $new, $source, $limit, $count);
if ($count > 0)
{
self::$replacement_count++;
return $result;
}
return $source;
}
createElement를 시도했지만 수정을 지원하지 않습니다 : No Modification Allowed Error –
'$ dom- > createElement()'는 나에게 잘 돌아 간다.'new DOMElement()를 사용하면 오류가 발생한다. – drudge