Nasıl php bir dizeden kelimelerin sadece bir tespit numarası alabilirim?

4 Cevap php

İşte yapmak ne çalışıyorum olduğunu. Ben metin bir blok var ve ben ortada sözlerini kesmeden dizeden ilk 50 sözcükleri ayıklamak istiyorum. Ben karakter karşıt sözler, o zaman sadece bir sol () işlevini kullanabilirsiniz tercih nedeni budur.

Ben str_word_count ($ var) işlevi bir dize sözcük sayısını dönecektir biliyorum, ama nasıl sadece ilk 50 kelime dönecekti?

Ben PHP üzerinde tam daldırma gidiyorum ve ben henüz, string fonksiyonları pek aşina değilim.

Thanks in advance, Jason

4 Cevap

Ben bir temel olarak kelime sayısını kullanarak karşı öneriyoruz. Kolayca görüntülemek amacıyla daha much daha az ya da much daha fazla veri ile bitebileceğini.

Ben geçmişte kullanmış olduğunuz bir yaklaşım istenilen uzunluğa isteyin, ama o bir kelime değil kesecek emin olmaktır. İşte sizin için çalışabilir bir şey var:

function function_that_shortens_text_but_doesnt_cutoff_words($text, $length)
{
    if(strlen($text) > $length) {
        $text = substr($text, 0, strpos($text, ' ', $length));
    }

    return $text;
}

That said, if you pass 1 as the second parameter to str_word_count, it will return an array containing all the words, and you can use array manipulation on that. Also, you could although, it's somewhat hackey, explode the string on spaces, etc... But that introduces lots of room for error, such as things that are not words getting counted as words.

PS. Eğer bir Unicode güvenli yukarıdaki fonksiyonu sürümü ve gerekiyorsa ya var mbstring veya iconv yüklü uzantıları, sadece kendi mb_ ile tüm dize işlevlerini değiştirmek veya iconv_ eşdeğer öneki.

str_word_count dönmek için ne söyler isteğe bağlı bir parametre alır.

Kelimeler dizelerden oluşan bir dizi döndürür:

$words = str_word_count($var, 1);

Sonra gibi bir şey ile şeyleri dilim:

$len = min(50, count($words));
$first_fifty = array_slice($words, 0, $len);

Eğer kelimelerin belirli bir sayıda istediğinizden emin misiniz? Eğer bir "önizleme" gibi bir şey yapıyorsanız, bu gibi bir şey kullanabilirsiniz bu durumda "bir kelime sınırında kesmek kadar 300 karakter", gibi bir şey yapmak için genellikle daha bulunuyor:

if (strlen($str)>300)
{
  $str = substr($str,0,300);
  $pos = strrpos($str, ' ');
  if ($pos !== false && $pos > 200) // If there is no space in the last 100 chars, just truncate
    $str = substr($str,0,$pos);
  // You may also want to add ellipses:
  // $str .= '...';
}

Bunu yapmak için kolay bir yol bulduk:

function get_len_of_word($str,$number) { $array_str = explode(" ", $str); if(isset($array_str[$number])) { return implode(" ",array_slice($array_str, 0, $number)); } return $str; }