2010-01-23 5 views
1

J'utilise ci-dessous code pour triming titres et montrer recent posts section sur mon blog:PHP Substr Fonction Recadrage Problème

<?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>'; 
} ?> 

Mais il y a des problèmes avec des entités de caractères HTML. Lorsque j'utilise substr fonction pour couper un titre, substr fonction de coupe des entités de caractères HTML aussi.

J'ai donc essayé d'utiliser la fonction html_entity_decode mais je ne peux pas le faire très bien.

Quelqu'un peut-il m'aider?

Répondre

0

Je pense que vous pouvez utiliser la fonction strip_tags il par exemple:

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

Cela ne portera que sur le titre à l'exclusion des caractères html.

+0

Non, cela ne fonctionne pas. Je pense que la fonction 'strip_tags' supprime les balises HTML. Mais je veux enlever les entités de caractères HTML (http://htmlhelp.com/reference/html40/entities/). – fatihturan

3

Essayez ceci:

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

Cela décode toutes les entités et substr ne casserez rien. Après cela, vous pouvez encoder tous les caractères à leurs entités.

0

Utilisez cette fonction

<?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; 
} 
?> 
0

Il serait plus propre si vous pouvez laisser le html codage jusqu'à la dernière minute, par exemple quand vous faites écho à la chaîne $ title. Bien sûr, cela signifie que vous devez vous rappeler de coder toutes les chaînes vous-même.