2016-03-29 3 views
0

Ich habe String wie:Wie bekomme ich img-Tag, ohne es durch DOMDocument :: saveHTML von String zu ändern?

...。すっきりと整理され...のです。<br /><br /><img src="/photo/images/2016/03/25/0_3316.jpg" alt="漢字漢字漢字" /><br /><br />「あのと... 

Und ich versuche img-Tag von DOMDocument :: saveHTML zu erhalten:

$topic_conv = mb_convert_encoding(htmlspecialchars_decode($topic['Topic']['body']), 'HTML-ENTITIES', 'UTF-8'); 
$doc->loadHTML($topic_conv); 
$img_tags = $doc->getElementsByTagName('img'); 
foreach ($img_tags as $tag) { 
    $img_alt = $tag->getAttribute('alt'); 
    if (empty($img_alt)) continue; 
    $img = $doc->saveHTML($tag); 
    var_dump($img); 
    str_replace($img, $img . "<span style='{$img_style_caption}'>" . $img_alt . "</span>", htmlspecialchars_decode($topic['Topic']['body']))); 
} 

Der Ausgang ist: von der ursprünglichen <img src="/photo/images/2016/03/25/0_3316.jpg" alt="漢字漢字漢字">

Es ist anders string - es gibt keinen SPACE und/vor der schließenden Klammer, es sollte /> statt nur > haben. Und meine nächste Zeile Code str_replace funktioniert nicht, weil es nicht übereinstimmt.

Vielleicht kann jemand wissen, wie kann ich img-Tag erhalten, wie es in der ursprünglichen Zeichenfolge ist?

+1

Verwandte http://StackOverflow.com/Questions/3145237/Why-doesnt-PHP-Dom-Include-Slash-on-Self-Closing-Tags – Ghost

+0

@Ghost Vielen Dank viel für die Verbindung. – whitesiroi

Antwort

0

Wenn Sie es noch brauchen, versuchen Sie dann wie folgt aus:

str_replace($img, $img . "<span style='{$img_style_caption}'>" . $img_alt . " /" . "</span>", htmlspecialchars_decode($topic['Topic']['body']))); 

PS: Code ist aus meinem Kopf (so ungetestet). Lassen Sie mich wissen, wenn irgendwelche Probleme ...

Verwandte Themen