2016-06-03 13 views
0

Ich verwende PHPDocument und DOMXPath. Ich versuche, das Attribut mit JSON-Wert zu erhalten. Aber ich bekomme den genauen Wert nicht. Ich könnte die anderen Attribute gut bekommen, aber nicht das. Die HTML sieht aus wiePHP DOM: erhalten Attribut mit DOM

<a href="URL" title="{tt4438848=Nicholas Stoller (dir.), Seth Rogen, Rose Byrne, tt2567026=James Bobin (dir.), Mia Wasikowska, Johnny Depp, tt3498820=Anthony Russo (dir.), Chris Evans, Robert Downey Jr., tt2948356=Byron Howard (dir.), Ginnifer Goodwin, Jason Bateman, tt3385516=Bryan Singer (dir.), James McAvoy, Michael Fassbender, tt1985949=Clay Kaytis (dir.), Jason Sudeikis, Josh Gad, tt3068194=Whit Stillman (dir.), Kate Beckinsale, Chloë Sevigny, tt3799694=Shane Black (dir.), Russell Crowe, Ryan Gosling, tt3040964=Jon Favreau (dir.), Neel Sethi, Bill Murray, tt2241351=Jodie Foster (dir.), George Clooney, Julia Roberts}">X-Men: Apocalypse</a> 

Wenn ich echo $dom->getAttribute("href"); die Ausgabe URL
ist Wenn ich echo $dom->getAttribute("title"); verwenden die Ausgabe Bryan Singer (dir.), James McAvoy, Michael Fassbender

Ich kann nicht den genauen Attributwert erhalten.

bearbeiten Link phpfiddle.org/main/code/dvj5-zf0q

Kann mir jemand helfen ?? Ich bin neu in PHPDOM. Vielen Dank im Voraus

+0

Keine Antwort, aber der Wert dieses Attributs ist nicht JSON. – alex

+0

@alex Also gibt es keine Möglichkeit es zu bekommen ?? –

Antwort

2

den Titel-Attribut zu erhalten:

<?php 
$html = <<<EOF 
<html> 
<a href="URL" title="{tt4438848=Nicholas Stoller (dir.), Seth Rogen, Rose Byrne, tt2567026=James Bobin (dir.), Mia Wasikowska, Johnny Depp, tt3498820=Anthony Russo (dir.), Chris Evans, Robert Downey Jr., tt2948356=Byron Howard (dir.), Ginnifer Goodwin, Jason Bateman, tt3385516=Bryan Singer (dir.), James McAvoy, Michael Fassbender, tt1985949=Clay Kaytis (dir.), Jason Sudeikis, Josh Gad, tt3068194=Whit Stillman (dir.), Kate Beckinsale, Chloë Sevigny, tt3799694=Shane Black (dir.), Russell Crowe, Ryan Gosling, tt3040964=Jon Favreau (dir.), Neel Sethi, Bill Murray, tt2241351=Jodie Foster (dir.), George Clooney, Julia Roberts}">X-Men: Apocalypse</a> 
</html> 
EOF; 

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$links = $dom->getElementsByTagName('a'); 
foreach ($links as $link) { 
    $title = $link->getAttribute('title'); 
    echo $title; 
} 
?> 

bewusst sein, aber, dass die title keine JSON-String aber einige benutzerdefinierte Implementierung hält.
Siehe a demo on ideone.com.

eine Demo
$regex = '~\w+=((?:(?!(?:, tt)).)+)~'; 
foreach ($links as $link) { 
    preg_match_all($regex, $link->getAttribute('title'), $actors); 
    print_r($actors); 
} 

Siehe hierzu ein on ideone.com als:

\w+=((?:(?!(?:, tt)).)+) 

dies wäre Gegliedert für Ihr Problem:


Um tatsächlich die Informationen zu bekommen, könnten Sie einige regular expressions wie so verwenden Gut.

+0

Haben Sie den '$ Titel' wiederholt? –

+0

Danke für Ihre Hilfe .. Aber in meinem Fall funktioniert es nicht http://phpfiddle.org/main/code/dvj5-zf0q –

+0

@hemnathmouli: Siehe die aktualisierte Antwort. – Jan