너무 오래 동안이 하나에 내 머리를 긁적있다 ...값에 여러 단어가있는 속성이있는 DOMNode-> 속성 사용 문제
$dom = new DOMDocument();
$dom->loadHTML($content);
$links = $dom->getElementsByTagName('a')->item(0);
foreach ($links->attributes as $attribute) {
$name = $attribute->nodeName;
$value = str_replace('"', '', stripslashes($attribute->nodeValue));
echo "$name: $value<br />";
}
내가 결국 가지고 내 코드가 있습니다 : php dom get all attributes of a node. 또한 다른 속성을 호출하여 getAttribute()를 호출하여 동일한 결과를 얻었는지 확인했습니다.
내가 시도하고있는 HTML은 간단합니다 :
<a id="testid" title="testtitle" name="this is a testname" href="http://example.com/">link!</a>
다음과 같은 오류가 나타납니다.
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 1
내 스크립트가 출력 중입니다 :
id: testid
title: testtitle
name: this
is:
a:
testname:
href: http://example.com/
I 'name'속성이 한 단어 인 경우 결과가 제대로 작동한다고 덧붙여 야합니다.
분명히, 그것은 explode() 또는 무언가 어리석은 공간을 사용해야합니다. 모든 공간을 % 20 또는 다른 것으로 변환하지 않고이 문제를 해결할 수있는 방법이 있습니까 (링크를 넘어서는 다른 많은 콘텐츠가 있고 전체 콘텐츠 블록을 변환하지 않으려 고합니다).
나를 위해 작동합니다. 어떤 PHP 버전을 사용하고 있습니까? –
[DOM does not는 그런 것을 아무것도하지 않습니다] (http://codepad.viper-7.com/YqiUVN "Viper Codepad에서 위의 코드를 실행합니다"). 문제를 재현하는 코드 스 니펫을 제공하십시오. – Gordon
PHP 사용 5.3.2. 나는 플러그인에서 이것을 실제로하고 있기 때문에 문제는 WordPress라고 생각한다. 포스트 컨텐트를 문자열로 사용하고 WP 값을 공급하려고 시도했지만, 내 자신의 문자열로 작업했지만 WP는 통과하지 않았습니다. 그 안에 뭔가 있어야합니다. 나는 사용자 정의 단축 코드로 전환 할 수 있습니다. 훨씬 쉽게. –