[Tech] regexp per tag html

paolo palmerini paolo@palmerini.org
Mar 1 Giu 2004 20:45:15 CEST


On 06/01/04 16:09:04, Cosimo Vagarini wrote:
>> On Tue, 1 Jun 2004, paolo palmerini wrote:
>>> devo sostituire una stringa $old in un'altra $new all'interno del  
>>> testo
>>> contenuto in una pagina HTML, quindi tutto il testo che non si  
>>> trovi
>>> dentro tag html. come posso scrivere un'espressione regolare che
>>> individui il testo fuori dai tag?
> 
> Un po' difficile da capire, ma hai un solo tag? una intera pagina  
> html?
> devi sostituire tutto? solo qualcosa? :)))
>

non fate i furbini facendo domande per trovare altre soluzioni.... sono  
sicuro che avete capito benissimo ;-))
voglio un'espressione regolare che identifichi le parti di testo non  
incluse in un tag html, ovvero testo che non si trovi compreso fra i  
caratteri "<" e ">".

pero' mi spiego meglio ugualmente... ho una pagina php che legge un  
file html e lo restituisce sullo stdout. diciamo che devo operare sul  
file pippo.html, cambiando ogni occorrenza di $old in $new nelle parti  
di testo fuori dai tag: tipo questo frammento:

<?php

	$content = file_get_contents("pippo.html");
	
	echo preg_replace("/$old/","$new",$content);

?>

questo ovviamente sostituisce le stringhe senza curarsi dei tag, il che  
mi "scompiglia" l'html se provo ad operare su delle stringhe corte o  
del testo che compare anche nei tag.

il problema è che non saprei come esprimere il pattern, a parte la  
sintassi, ma non saprei descrivere neanche a parole come deve essere  
fatto.

ho cercato un po', e ho trovato pattern che matchano i tag (per esempio  
per rimuoverli e fare un semplice html2text, come indica cosimo con vi

> 
> :1,$s/<[^\/].*>\(.*\)<\/.*>/\1/g  (cosi' strippi solo i tags)
>

ma io avrei bisogno di una cosa un po' diversa.

ovviamente posso anche trovare altre soluzioni. la domanda a questo  
punto forse è solo accademica. mi domando: è possibile che con le  
espressioni regolari non si riesca ad esprimere quello che voglio??
so già che la risposta è: si, si può fare cosi.....


grazie
p.




-- 
paolo palmerini
http://palmerini.org



Maggiori informazioni sulla lista flug-tech