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