1

以下のコードを使用してタイトルをトリミングし、ブログの最近の投稿セクションを表示しています。

<?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タイトルをトリミングする関数を使用すると、 substrHTML 文字エンティティもトリミングされます。

だから私は関数を使おうとしましhtml_entity_decodeたが、うまくできません。

誰でも私を助けることができますか?

4

4 に答える 4

3

これを試して:

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

これにより、すべてのエンティティがデコードされるため、substr何も壊れません。その後、すべての文字をエンコードしてエンティティに戻すことができます。

于 2010-01-23T18:54:43.083 に答える
0

そこでstrip_tags関数を使用できると思います。

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

これは、html 文字を除くタイトルのみを処理します。

于 2010-01-23T18:41:51.430 に答える
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;
}
?>
于 2010-01-23T19:02:45.200 に答える
0

$title 文字列を実際にエコーするときなど、最後の最後まで html エンコーディングを残すことができれば、よりクリーンになります。もちろん、これは、すべての文字列を自分でエンコードすることを覚えておく必要があることを意味します。

于 2010-01-23T19:03:39.203 に答える