I've made the next function to return a specific number of words from a text:
function brief_text($text, $num_words = 50) {
$words = str_word_count($text, 1);
$required_words = array_slice($words, 0, $num_words);
return implode(" ", $required_words);
}
and it works pretty well with English language but when I try to use it with Arabic language it fails and doesn't return words as expected. For example:
$text_en = "Cairo is the capital of Egypt and Paris is the capital of France";
echo brief_text($text_en, 10);
will output Cairo is the capital of Egypt and Paris is the
while
$text_ar = "??????? ?? ????? ??? ?????? ?? ????? ?????";
echo brief_text($text_ar, 10);
will output ? ? ? ? ? ? ? ? ? ?
.
I know that the problem is with the str_word_count
function but I don't know how to fix it.
UPDATE
I have already written another function that works pretty good with both English and Arabic languages, but I was looking for a solution for the problem caused by str_word_count()
function when using with Arabic. Anyway here is my other function:
function brief_text($string, $number_of_required_words = 50) {
$string = trim(preg_replace('/s+/', ' ', $string));
$words = explode(" ", $string);
$required_words = array_slice($words, 0, $number_of_required_words); // get sepecific number of elements from the array
return implode(" ", $required_words);
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…