2009-11-28 5 views
1

Je crée un site où le code sera affiché en texte clair dans un tag PRE (pas de surbrillance, de commentaires, pas de tags d'édition) et je veux qu'ils puissent cliquer sur un bouton et avoir le mis en surbrillance, commenté et éditer le code de la balise à apparaître (également dans une balise pré).PRE tag to Plain Text

Il est évident que je dois stocker le code HTML mis en surbrillance quelque part, mais je cherchais une fonction comme un html2text qui prendra toute essence de la balise PRE édition et le convertir en texte brut avec la balise PRE plaine

Pour par exemple quelque chose comme ça

<pre> 
<b>ON SELECT</b> 
{ 
    "<edit title="This will be the filename.">beep.wav</edit>" SOUND 
} 
</pre> 

à quelque chose comme ça

<pre> 
ON SELECT 
{ 
    beep.wav SOUND 
} 
</pre> 

Edit: aussi tout ce qui pourrait aller dans une balise avant qui est non -html n'aurait pas de balises <. Il y aurait> et < 's mais pas un <> fermé. Le langage de script ne l'utilise pas. Cela signifie donc que tout ce dont j'ai besoin est quelque chose pour extraire les balises < fermées.

+0

obligatoire: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained -tags/1732454 # 1732454 même avant que quelqu'un ne mentionne regex (il y en a toujours un). –

+0

Juste pour noter, j'ai trouvé cette fonction PHP qui fait HTML en texte brut, mais il ne reconise pas les espaces, les tabulations, \ n dans les balises PRE. http://www.chuggnutt.com/html2text.php – Brian

Répondre

2

En Javascript, vous pourriez faire avec les fonctions DOM + regex

<body> 
<pre> 
<b>ON SELECT</b> 
{ 
    "<edit title="This will be the filename.">beep.wav</edit>" SOUND 
} 
</pre> 

<textarea id="result" rows=10 cols=50></textarea> 

<script> 
    x=document.getElementsByTagName("pre"); 
    for(i in x){ 
     text=x[i].innerHTML.replace(/<.*?>/g,''); 
     text=text.replace(/"/g,''); 
     document.getElementById("result").value+="<pre>"+text+"</pre>"; 
    } 
</script> 
</body> 

Cela vous donnera vos résultats attendus, l'ajuster dépend de vos besoins.

<pre> 
ON SELECT 
{ 
    beep.wav SOUND 
} 
</pre> 

ou en PHP, vous pouvez utiliser des parseurs pour HTML