php заменить значение ссылки - PullRequest
0 голосов
/ 14 февраля 2012
$links = $li->getElementsByTagName('a');

foreach ($links as $link)
{
$link_text = $link->nodeValue;
$image = $dom->createElement('img');
$image->setAttribute('src', 'some target');
$image->setAttribute('alt', $link_text);

$link->nodeValue($image); // doesnt work
}

Как заменить значение узла на новое? (с использованием документа domdocument)

На самом деле внутри li есть одна ссылка, но я не уверен, как получить ее без foreach.

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Вы можете попробовать это (с $ doc как вашим DOMDocument).

// saveHTML returns the node as a string of HTML.
$link->nodeValue = $doc->saveHTML($image);

Или, более целесообразно, вы можете добавить изображение в качестве дочернего узла:

// name should be self-documenting.
$link->appendChild($image);

Кроме того, если у вас есть только один, вы можете просто использовать метод item и избегать foreach:

$link = $li->getElementsByTagName('a')->item(0);
0 голосов
/ 14 февраля 2012

http://us2.php.net/manual/en/class.domnode.php#domnode.props.nodevalue

nodeValue - это строка. Он не может быть вызван как метод. Вы можете установить значение этой строки напрямую, так как это открытый член.

$link->nodeValue = $link_text;

Документы, указанные выше, должны отвечать на любые ваши вопросы.

0 голосов
/ 14 февраля 2012

Вы пробовали оператор присваивания, =?

$link->nodeValue = $link_text;
...