ugrás a tartalomhoz

HTML-t tartalmazó karakterláncban TAG-hez attributum hozzáadás.

Sweetchack · 2007. Okt. 9. (K), 20.45
Sziasztok

A segítségeteket szeretném kérni az alábbi esethez.
Egy karakterláncban, ami HTML elemeket is tartalmaz, bizonyos TAG-hez egy attributomot kell hozzáadni.

Az bemeneti szöveg($text) nagyon sok féle lehet ezért a RegEx-et nem akartam használni.
  1. <html>  
  2.     <head>  
  3.         <!-- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2"> -->  
  4.         <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">  
  5.     </head>  
  6. <body>  
  7.   
  8. <?php  
  9.     $text = 'öÖ üÜ óÓ őŐ úÚ éÉ áÁ űŰ íÍ  
  10. <img id="kulso-no-src">  
  11. valami rendes szoveg  
  12. <img src="kamu.jpg" id="kulso-with-src">  
  13. <div>  
  14.     <img id="belso-no-src">         
  15.     <img src="kamu.jpg" id="belso-with-src">  
  16.     <div>  
  17.         itt is egy rendes szoveg  
  18.         <img id="nagyon-belso-no-src">          
  19.         <img src="igazi.jpg" id="nagyon-belso-with-src">  
  20.     </div>  
  21. </div>'  
  22.     ;   
  23.       
  24.       
  25.     echo "<pre>" . $text . '</pre>';      
  26.           
  27.     $doc = new DomDocument();     
  28.   
  29.     $doc->preserveWhiteSpace = true;  
  30.     $doc->formatOutput = false;  
  31.       
  32.     $doc->loadHTML($text);  
  33.       
  34.     $nodes = $doc->getElementsByTagName('img');  
  35.       
  36.     foreach ($nodes as $node)  
  37.     {  
  38.         if(  
  39.             $node->hasAttribute('src')  
  40.             AND  
  41.             !$node->hasAttribute('usemap')  
  42.             AND  
  43.             $node->getAttribute('src') == 'igazi.jpg'  
  44.         )  
  45.         {  
  46.             $node->setAttribute('usemap''#imagemap-6-640-480');  
  47.         }  
  48.     }     
  49.     $result = $doc->saveHTML();  
  50.     $begin = "<html><body>\n<p>";  
  51.     $end = '</body></html>';  
  52.     $result = substr  
  53.     (  
  54.         $result,  
  55.         strpos($result$begin) + strlen($begin),  
  56.         -1 - strlen($end)  
  57.     );  
  58.       
  59.     //$table = get_html_translation_table();  
  60.     //$table = array_flip($table);  
  61.     //$result = strtr($result, $table);   
  62.       
  63.     //$result = html_entity_decode($result);  
  64.     echo "<pre>" . $result . '</pre>';        
  65. ?>  
  66. </body>  
  67. </html>  
A fenti kód részlet látszatra jól működik, de az ékezetes karakterekkel gondok vannak.
Fontos lenne hogy a szöveg többi részén semmilyen változás ne történjen.

Javaslatoknak nagyon fogok örülni :)
Dávid Andor
 
1

UTF-8?

janoszen · 2007. Okt. 10. (Sze), 08.41
Egyáltalán UTF-8-ban van elmentve a fájl?
2

UTF-8

Sweetchack · 2007. Okt. 10. (Sze), 22.55
Minden UTF-8, Apache, PHP, a fájl is.
Már a windózos felhasználói nevem is "UTF-8" :)