Revision: 3695
Updated Code
at September 2, 2007 08:32 by pitje
Updated Code
<?php function closetags ( $html ) { #put all opened tags into an array preg_match_all ( "#<([a-z]+)( .*)?(?!/)>#iU", $html, $result ); $openedtags = $result[1]; #put all closed tags into an array preg_match_all ( "#</([a-z]+)>#iU", $html, $result ); $closedtags = $result[1]; $len_opened = count ( $openedtags ); # all tags are closed if( count ( $closedtags ) == $len_opened ) { return $html; } $openedtags = array_reverse ( $openedtags ); # close tags for( $i = 0; $i < $len_opened; $i++ ) { if ( !in_array ( $openedtags[$i], $closedtags ) ) { $html .= "</" . $openedtags[$i] . ">"; } else { unset ( $closedtags[array_search ( $openedtags[$i], $closedtags)] ); } } return $html; } $str = "<div>This is some interesting <strong><em>content!</em> And this</strong> line is <em>"; $str .= "abundantly</em> formatted</div>"; $snippet = substr ( $str, 0, 45 ); $snippet = strrpos ( $snippet, "<" ) > strrpos ( $snippet, ">" ) ? rtrim ( substr ( $str, 0, strrpos ( $snippet, "<" ) ) ) . "....." : rtrim ( $snippet ) . "....."; $x = closetags ( $snippet ); print htmlspecialchars ( $x ); ?>
Revision: 3694
Updated Code
at September 2, 2007 08:21 by pitje
Updated Code
<?php function closetags ( $html ) { #put all opened tags into an array preg_match_all ( "#<([a-z]+)( .*)?(?!/)>#iU", $html, $result ); $openedtags = $result[1]; #put all closed tags into an array preg_match_all ( "#</([a-z]+)>#iU", $html, $result ); $closedtags = $result[1]; $len_opened = count ( $openedtags ); # all tags are closed if( count ( $closedtags ) == $len_opened ) { return $html; } $openedtags = array_reverse ( $openedtags ); # close tags for( $i = 0; $i < $len_opened; $i++ ) { if ( !in_array ( $openedtags[$i], $closedtags ) ) { $html .= "</" . $openedtags[$i] . ">"; } else { unset ( $closedtags[array_search ( $openedtags[$i], $closedtags)] ); } } return $html; } $str = "<div>This is some interesting <strong><em>content!</em> And this</strong> line is <em>"; $str .= "abundantly</em> formatted</div>"; $snippet = substr ( $str, 0, 45 ); $snippet = strrpos ( $snippet, "<" ) > strrpos ( $snippet, ">" ) ? rtrim ( substr ( $str, 0, strrpos ( $snippet, "<" ) ) ) . "....." : rtrim ( $snippet ) . "....."; $x = closetags ( $snippet ); print htmlspecialchars ( $x ); ?>
Revision: 3693
Updated Code
at September 2, 2007 08:18 by pitje
Updated Code
<?php function closetags ( $html ) { #put all opened tags into an array preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); $openedtags=$result[1]; #put all closed tags into an array preg_match_all("#</([a-z]+)>#iU",$html,$result); $closedtags=$result[1]; $len_opened = count($openedtags); # all tags are closed if(count($closedtags) == $len_opened){ return $html; } $openedtags = array_reverse($openedtags); # close tags for($i=0;$i<$len_opened;$i++) { if (!in_array($openedtags[$i],$closedtags)) { $html .= '</'.$openedtags[$i].'>'; } else { unset($closedtags[array_search($openedtags[$i],$closedtags)]); } } return $html; } $str = "<div>This is some interesting <strong><em>content!</em> And this</strong> line is <em>"; $str .= "abundantly</em> formatted</div>"; $snippet = substr($str,0,45); $snippet = strrpos($snippet,"<") > strrpos($snippet,">") ? rtrim(substr($str,0,strrpos($snippet,"<"))) . '.....' : rtrim($snippet) . '.....'; $x = closetags($snippet); print htmlspecialchars($x); ?>
Revision: 3692
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 2, 2007 08:15 by pitje
Initial Code
<?php function closetags($html){ #put all opened tags into an array preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); $openedtags=$result[1]; #put all closed tags into an array preg_match_all("#</([a-z]+)>#iU",$html,$result); $closedtags=$result[1]; $len_opened = count($openedtags); # all tags are closed if(count($closedtags) == $len_opened){ return $html; } $openedtags = array_reverse($openedtags); # close tags for($i=0;$i<$len_opened;$i++) { if (!in_array($openedtags[$i],$closedtags)){ $html .= '</'.$openedtags[$i].'>'; } else { unset($closedtags[array_search($openedtags[$i],$closedtags)]); } } return $html; } $str = "<div>This is some interesting <strong><em>content!</em> And this</strong> line is <em>"; $str .= "abundantly</em> formatted</div>"; $snippet = substr($str,0,45); $snippet = strrpos($snippet,"<") > strrpos($snippet,">") ? rtrim(substr($str,0,strrpos($snippet,"<"))) . '.....' : rtrim($snippet) . '.....'; $x = closetags($snippet); print htmlspecialchars($x); ?>
Initial URL
Initial Description
suppose you have some html-formatted text of which you would like to show the first 45 characters. This function closes any tags that are not-closed because of cutting the first 45 characters. Note that tags are also counted when defining the first 45 characters!
Initial Title
close tags in a html-snippet
Initial Tags
Initial Language
PHP