PHP substr Fonksiyon Kırpma Sorunu

6 Cevap php

Ben başlıkları triming için aşağıdaki kodu kullanarak ve recent posts section Benim üzerinde göstermek ediyorum 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>';
} ?>

Ancak HTML karakter varlıkları ile sorun vardır. I bir başlık kırpmak için substr işlevini kullandığınızda, substr fonksiyonu çok HTML karakter kırparak.

Yani ben html_entity_decode işlevini kullanmaya çalıştı ama ben çok iyi yapamam.

Herkes bana yardımcı olabilir?

6 Cevap

UTF-8 gibi multibyte karakter kodlamaları için mb_substr kullanın. mb_substr karakterleri sayar ise substr sadece bayt sayar.

substr() works with singlebyte only http://php.net/manual/en/function.mb-substr.php

Bu deneyin:

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

Bu çok substr şey kırmak değil tüm varlıkları çözecektir. Bundan sonra geri kişilere tüm karakterleri kodlamak.

try this

or use strip_tags then use substr

Ben örneğin vardır strip_tags işlevini kullanabilirsiniz düşünüyorum:

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

Bu, herhangi bir html karakter hariç başlığı ile sadece anlaşma olacaktır.

Bu işlevini kullanın

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

Eğer son dakika, örneğin kadar html kodlama bırakabilirsiniz eğer temiz olacağını aslında $ başlık dize echo. Tabii ki, bütün dizeleri kendinizi kodlamak için hatırlamak zorunda kalıyoruz.