php - Split paragraphs into multidimensional array -
i'm trying put html-informations in array.
<p>title 1</p> <p><span>content 1</span></p> <p><span>content 2</span></p> <p>title 2</p> <p><span>content 1</span></p> <p><span>content 2</span></p> <p><span>content 3</span></p>
i want put these in array fields "title" , "content". problem put p-tags has span , belongs same title.
the result should be: (strip_tags title , remove span content)
[0]['title'] => 'title 1', [0]['content'] => ' <p>content 1</p><p>content 2</p>', [1]['title'] => 'title 2', [1]['content'] => ' <p>content 1</p><p>content 2</p><p>content 3</p>',
my attempt:
$paragraphs = explode('<p>', $html); ($i = 0 ; $i < count($paragraphs) ; $i++) { $paragraphs[$i] = '<p>' . $paragraphs[$i]; if (strpos($paragraphs[$i], '<span') !== false) $content .= $paragraphs[$i]; else $title = $paragraphs[$i]; }
but merge content 1 variable. need above array...
you need implement own counter checking title change.
$output = array(); $last_title=''; // store last title reference $counter=-1; //your counter $paragraphs = explode('<p>', $html); ($i = 1,$c=count($paragraphs) ; $i < $c ; $i++) { //start second there blank row $paragraphs[$i] = '<p>' . $paragraphs[$i]; if (strpos($paragraphs[$i], '<span') !== false) { $output[$counter]['content'] .= trim(strip_tags($paragraphs[$i],'<p>')); } else $title = $paragraphs[$i]; if ($title != $last_title){ $last_title = $title; $counter++; $output[$counter]['title'] = strip_tags($title); $output[$counter]['content'] = ''; } } print_r ($output);
note: still suggest php dom.
Comments
Post a Comment