Выдержка не работает с содержимым файла - PullRequest
1 голос
/ 17 декабря 2010
$excerpt= excerpt(file_get_contents("data/file.txt"), 30);
echo $excerpt;

function excerpt($str, $chars){
    $index = strripos($str, ' ');
    return substr($str, 0, $index)."...";
}

Не возвращает текст, разделенный на 30 символов или меньше.Он возвращает весь текст без последнего слова и добавленных точек, но если вы используете строку, набранную вручную, она отлично работает.

Почему это не работает, если содержимое загружается из текстового файла?Я думаю, что / n's разбиваются о странности.

Ответы [ 3 ]

4 голосов
/ 17 декабря 2010

Вы хотите использовать стрипос, а не стрипос.

<?php

$excerpt= excerpt(file_get_contents("data/file.txt"), 30);
echo $excerpt;

function excerpt($str, $chars){
    $index = stripos($str, " ", $chars);
    return substr($str, 0, $index)."...";
}

?>
2 голосов
/ 17 декабря 2010

Проблема не связана с использованием stripos.Как я вижу, вы пытаетесь урезать строку до 30 символов, не разрезая слова пополам.Для этого вам нужно исправить функцию excerpt:

function excerpt($str, $chars) {
//no need to trim, already shorter than wanted dimension    
if (strlen($tr) <= $chars) {        
    return $str;    
}       

//find last space within wanted dimension   
$last_space = strrpos(substr($str, 0, $chars), ' ');    
$trimmed_text = substr($str, 0, $last_space);

return $trimmed_text . '...';
}

и да, ваша функция даже не использует параметр $ chars ...

0 голосов
/ 17 декабря 2010

Полагаю, вам нужен отрывок с как можно большим количеством целых слов.Несколько советов:

Если вам нужны только первые 30 символов, вам не следует читать весь файл!

Что нужно делать: читать только до максимальной длины фрагмента, а затем отформатировать.

function readExcerpt($path){
    $fhand = fopen($path,"r");
    $excerpt = fread($fhand ,30);
    fclose($fhand);
    return $excerpt;
}

    function fromatExcerpt($excerpt){
       //remove last word/word fragment
       $index = strripos($excerpt,' ');
       if($index!==false){
          $excerpt= substr($excerpt,0,$index);
       }
       return $excerpt.'...';  
    }

    echo fromatExcerpt(readExcerpt("D:\hotfix.txt")); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...