2010-08-30 4 views
0

J'ai une page avec plusieurs en-têtes H1 suivis de texte et ainsi de suite. Exemple:PHP Obtenir du texte entre plusieurs <h1>...</h1> Tags

<h1>Title 1</h1>Some text here 
<h1>Title 2</h1>Some more text here 
<h1>Title 3</h1>Even more text here 

etc

Ce que je veux faire est de créer un ensemble d'éléments, qui est le code HTML en utilisant exploser comme séparateur <h1>ANY TEXT</h1> ci-dessus que j'ai dans une variable de sortie $.

Le but final est de compter le strlen du texte entre la terminaison </h1> et démarrage suivant <h1> et si elle est supérieure à 200 caractères pour le cacher dans un <span> avec display:none afin que les utilisateurs peuvent appuyer sur « Tout afficher » pour réafficher que.

Comment puis-je obtenir cela s'il vous plaît?

+2

Apparemment, javascript est désactivé sur votre navigateur. –

+2

[Vous devez déposer regex et utiliser un analyseur à la place] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Amarghosh

+1

leur donner une carte d'identité et l'utilisation getElementById() – Grumpy

Répondre

1

Vous pouvez utiliser le SimplePHPDom faire avant d'envoyer la page vers le client:

ob_start(); 
// build page here 
$html = ob_get_clean(); 

$dom = str_get_html($html); 

$headings = $dom->find('h1'); 

foreach($headings as $h1) { 
    // process node to add CSS to hide node and change text to 'show more' 
} 

Cela pourrait aussi être fait côté client avec jQuery/MooTools, avec essentiellement le même processus (moins la mise en mémoire tampon capture des choses).

+0

Je pense que l'OP veut analyser le texte qui vient après ** ** les balises H1 ... 'texte entre la terminaison et ensuite départ

' –

+0

Ah oui ... d'oh ... Lundis ... Dans ce cas, '$ h1-> nextSibling()' entrerait probablement en jeu dans 'foreach()' –

Questions connexes