ugrás a tartalomhoz

Archívum - Okt 9, 2007 - Fórum téma

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
 

SESSID az URL-ben

true.fx · 2007. Okt. 9. (K), 16.50
Sziasztok!

A probléma a következő. A weboldalunkon úgy működik a session, hogy ha a browser nem képes a cookie-kat fogadni, vagy ki van kapcsolva a cookie fogadás, akkor URL-ben, illetve hidden mezőben adja át a session ID-t. Ez idáig rendben is lenne, de sajnos van nálunk olyan munkakörben valaki hogy S(earch)E(ngine)M(arketing) Manager, és problémát okoz neki, hogy a Google leindexeli olyan URL-eket, amiben "SESSID=nagyonrondahosszústring" található. :)

Azt találtam ki, hogy ha a HTTP_USER_AGENT -ben googlebot (vagy nem tudom mit küld pontosan a Google Bot) szerepel, akkor ini_set -tel bekapcsolom a session.use_only_cookies direktívát, még az oldal generálása előtt. Persze ez mindenféle teljesítmény problémát fog okozni (okos programozók itt a sessionben cache-elnek keresési eredményeket pl.), de üsse kő, kapja meg a management amire vágyik.

Szerintetek fog ez így működni, ill. van e jobb megoldás erre?