PHP Substr功能修剪问题

时间:2010-01-23 18:33:41

标签: php substr html-encode

我正在使用以下代码来修改标题并在recent posts section上显示blog

<?php global $post;
$releaseDate = get_post_meta($post->ID, "gosterim_tarihi", true);
foreach( $images as $image ) {
    $title = get_the_title();
    if (strlen($title) > 20) { $title = substr($title, 0, 20) . '&hellip;'; }
    $attachmentimage=wp_get_attachment_image_src( $image->ID, 'large' );
    echo '<li><a href="'. get_permalink() .'" title="' . $title . '"><img src="'. $attachmentimage[0] .'" alt="'. $title .'" />'. $title .'<span>Gösterim Tarihi: ' . $releaseDate . '</span></a></li>';
} ?>

但是HTML字符实体存在问题。当我使用substr函数修剪标题时,substr函数也会修剪HTML字符实体。

所以我尝试使用html_entity_decode功能,但我做得不好。

任何人都可以帮助我?

4 个答案:

答案 0 :(得分:3)

试试这个:

$output = htmlentities(substr(html_entity_decode($input), 0, 20));

这会解码所有实体,因此substr不会破坏任何内容。之后,您可以将所有字符编码回其实体。

答案 1 :(得分:0)

我认为您可以使用strip_tags函数,例如:

substr(strip_tags($title), 0, 20);

这只会处理不包含任何html字符的标题。

答案 2 :(得分:0)

使用此功能

<?php
  function keephtml($string){
          $res = htmlentities($string);
          $res = str_replace("&lt;","<",$res);
          $res = str_replace("&gt;",">",$res);
          $res = str_replace("&quot;",'"',$res);
          $res = str_replace("&amp;",'&',$res);
          return $res;
}
?>

答案 3 :(得分:0)

如果您可以将html编码保留到最后一分钟,那将会更清晰,例如当你实际回显$ title字符串时。当然,这意味着你必须记住自己编码所有字符串。