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.

<html>
	<head>
		<!-- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2"> -->
		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
	</head>
<body>

<?php
	$text = 'öÖ üÜ óÓ őŐ úÚ éÉ áÁ űŰ íÍ
<img id="kulso-no-src">
valami rendes szoveg
<img src="kamu.jpg" id="kulso-with-src">
<div>
	<img id="belso-no-src">		
	<img src="kamu.jpg" id="belso-with-src">
	<div>
		itt is egy rendes szoveg
		<img id="nagyon-belso-no-src">		
		<img src="igazi.jpg" id="nagyon-belso-with-src">
	</div>
</div>'
	; 
	
	
	echo "<pre>" . $text . '</pre>';	
		
	$doc = new DomDocument();	

	$doc->preserveWhiteSpace = true;
	$doc->formatOutput = false;
	
	$doc->loadHTML($text);
	
	$nodes = $doc->getElementsByTagName('img');
	
	foreach ($nodes as $node)
	{
		if(
			$node->hasAttribute('src')
			AND
			!$node->hasAttribute('usemap')
			AND
			$node->getAttribute('src') == 'igazi.jpg'
		)
		{
			$node->setAttribute('usemap', '#imagemap-6-640-480');
		}
	}	
	$result = $doc->saveHTML();
	$begin = "<html><body>\n<p>";
	$end = '</body></html>';
	$result = substr
	(
		$result,
		strpos($result, $begin) + strlen($begin),
		-1 - strlen($end)
	);
	
	//$table = get_html_translation_table();
	//$table = array_flip($table);
	//$result = strtr($result, $table);	
	
	//$result = html_entity_decode($result);
	echo "<pre>" . $result . '</pre>';		
?>
</body>
</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" :)