2010-08-30 3 views
0

У меня есть страница с несколькими заголовками H1, за которой следует текст и т. Д. Пример:PHP Получить текст между несколькими <h1>...</h1> теги

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

и т.д.

То, что я хочу сделать, это создать массив элементов, то есть взорвать HTML, используя в качестве разделителя <h1>ANY TEXT</h1> выше, что у меня есть в переменной $ вывода.

Конечной цель состоит в том, чтобы подсчитать STRLEN текста между окончанием </h1> и следующим запуском <h1> и если она выше, чем 200 символов, чтобы скрыть его внутри <span> с display:none, так что пользователи могут нажать кнопку «Показать все», чтобы отобразить это.

Как я могу получить это, пожалуйста?

+2

Звучит как клиентская сторона JavaScript поможет вам здесь. –

+2

[Вы должны добавить регулярное выражение и вместо него использовать парсер] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Amarghosh

+1

дать им ID и использование getelementbyid() – Grumpy

ответ

1

Вы можете использовать SimplePHPDom сделать это перед отправкой страницы к клиенту:

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' 
} 

Это также может быть сделано на стороне клиента с JQuery/MooTools, в основном с тем же процессом (минус буферизация захват материала).

+0

Я думаю, что OP хочет проанализировать текст, который появляется ** после ** тегов H1 ... 'текст между окончанием и следующим стартом

' –

+0

Ах да ... d'oh ... Понедельник ... В этом случае '$ h1-> nextSibling()', вероятно, войдет в игру в 'foreach()' –

Смежные вопросы