PHP karakter belirli bir süre sonra nasıl metni kesti mi?

9 Cevap php

Ben diyorum örneğin ilk 25 karakteri sağlar sınırlamak isteyen iki dize var. 25. karakterden sonra metni kesip ilave edin ... dizenin sonuna kadar bir yolu var mı?

So '12345678901234567890abcdefg' would turn into '12345678901234567890abcde...' where 'fg' is cut off.

9 Cevap

Pallan'ın kodunda değişiklik yapabilir miyim?

$truncated = (strlen($string) > 20) ? substr($string, 0, 20) . '...' : $string;

Bu katmıyor '...' o kısa ise.

Gerçekten hızlı,

$truncated = substr('12345678901234567890abcdefg', 0, 20) . '...'

substr fonksiyonu sizin için doğru olanıdır

$words=explode(' ', $string);
for($ii = 0,$j=0; $ii< 5 && $j < sizeof($words) ;$j++){
    $ii += strlen($words[$j]);
    $intro= $words[$j]. " ";    
}
$intro.= "...";

Ben onun için geç biliyorum, ama başka herkes bu sayfaya dönüyor, bu yapacak

Ben bazı ek iyileştirmeler ile, Pascal Martin yanıt ile gitmek istiyorum. Çünkü;

1 - "PHP wordwrap", otomatik olarak kelime sınırları saygı

2 - Dizenizin bir kelime fazla 25 karakter içeren (Aagh, bunu yapmak için hiçbir şey yoktur) Eğer kelimeyi kesmek için "PHP wordwrap" zorlayabilirsiniz (iyileştirme).

3 -. Senin dize 25 karakter daha kısa ise, o zaman ... "" tam bir cümle sonra çirkin görünüyor olacaktır (iyileştirme)

$str = "This string might be longer than 25 chars, or might not!";
// we are forcing to cut long words...
$wrapped = wordwrap($str, 25, "\n", 1);
var_dump($wrapped);

$lines = explode("\n", $wrapped);
var_dump($lines);

// if our $str is shorter than 25, there will be no $lines[1]
(array_key_exists('1', $lines)) ? $suffix = '...' : $suffix = '';
$new_str = $lines[0] . $suffix;
var_dump($new_str);
<?php echo substr('12345678901234567890abcdefg', 0, 20) . '...' ?>

http://fr.php.net/manual/en/function.substr.php

Sen substr yöntem arıyorsanız.

$s = substr($input, 0, 25);

Bu size dizenin ilk Mandreni alacak ve o zaman sonuna kadar ne istiyorum ekleyebilirsiniz.

 echo substr($str,0,25)."...";

Hile yapmak istiyorsunuz, ama kelimelerle ilgileniyor eğer kısmi kelime bu DOIG zorunda kalmamak, kelime boundry üzerinde kesmek isteyebilirsiniz: Hızlı bl ...

Böylece (kafamın üst kapalı ham) yapmak için:

$words = split(" ", strlen($str));

for($i = 0,$j=0; $i< 25 && $j < sizeof($words) ;$j++)
{
    $i += strlen($words[$j]);
    echo $words[$j]. " ";    
}
echo "...";