복붙노트

문자열의 처음 n 문자 가져 오기

PHP

문자열의 처음 n 문자 가져 오기

어떻게하면 PHP에서 문자열의 처음 n 문자를 얻을 수 있습니까? 문자열을 특정 수의 문자로 잘라내고 필요한 경우 '...'을 추가하는 가장 빠른 방법은 무엇입니까?

해결법

  1. ==============================

    1.

    //The simple version for 10 Characters from the beginning of the string
    $string = substr($string,0,10).'...';
    

    최신 정보:

    길이 검사에 대한 제안에 기반합니다 (또한 자르기 및 자르지 않은 문자열에서 비슷한 길이를 유지).

    $string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;
    

    그러면 최대 13 자의 문자열을 얻을 수 있습니다. 13 자 (이하)의 일반 문자 또는 10 자 다음에 '...'

    업데이트 2 :

    또는 기능으로 :

    function truncate($string, $length, $dots = "...") {
        return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
    }
    

    업데이트 3 :

    이 대답을 쓴 이후로 나는이 코드를 더 이상 사용하지 않았습니다. 나는 wordwrap 함수를 사용하여 단어 중간에 문자열을 깨뜨리는 것을 방지하는이 함수를 선호한다.

    function truncate($string,$length=100,$append="…") {
      $string = trim($string);
    
      if(strlen($string) > $length) {
        $string = wordwrap($string, $length);
        $string = explode("\n", $string, 2);
        $string = $string[0] . $append;
      }
    
      return $string;
    }
    
  2. ==============================

    2.이 기능은 버전 4.0.6부터 PHP에 내장되었습니다. 문서를 참조하십시오.

    이 기능은 버전 4.0.6부터 PHP에 내장되었습니다. 문서를 참조하십시오.

    echo mb_strimwidth('Hello World', 0, 10, '...');
    
    // outputs Hello W...
    

    trimmarker (위 줄임표)는 잘린 길이에 포함됩니다.

  3. ==============================

    3.charset 문자열을 제어해야하는 경우 Multibyte 확장을 사용하면 편리합니다.

    charset 문자열을 제어해야하는 경우 Multibyte 확장을 사용하면 편리합니다.

    $charset = 'UTF-8';
    $length = 10;
    $string = 'Hai to yoo! I like yoo soo!';
    if(mb_strlen($string, $charset) > $length) {
      $string = mb_substr($string, 0, $length - 3, $charset) . '...';
    }
    
  4. ==============================

    4.때로는 문자열을 마지막 완전한 단어로 제한해야합니다. 즉, 두 번째 마지막 단어로 끝나는 대신 마지막 단어가 손상되지 않도록해야합니다.

    때로는 문자열을 마지막 완전한 단어로 제한해야합니다. 즉, 두 번째 마지막 단어로 끝나는 대신 마지막 단어가 손상되지 않도록해야합니다.

    예 : 우리는 6 개의 문자로 "This is my ..."를 "This is my ..."로 제한해야합니다. 즉, "this ... ..."가되도록합니다. 즉, 마지막 단어에서 깨진 글자는 건너 뜁니다.

    휴, 설명하기에 나쁘다, 여기 코드가있다.

    class Fun {
    
        public function limit_text($text, $len) {
            if (strlen($text) < $len) {
                return $text;
            }
            $text_words = explode(' ', $text);
            $out = null;
    
    
            foreach ($text_words as $word) {
                if ((strlen($word) > $len) && $out == null) {
    
                    return substr($word, 0, $len) . "...";
                }
                if ((strlen($out) + strlen($word)) > $len) {
                    return $out . "...";
                }
                $out.=" " . $word;
            }
            return $out;
        }
    
    }
    
  5. ==============================

    5.codeigniter 프레임 워크에는 "텍스트 도우미"라고하는 도우미가 들어 있습니다. 다음은 적용 가능한 codeigniter 사용자 설명서의 일부 문서입니다. http://codeigniter.com/user_guide/helpers/text_helper.html (단지 word_limiter 및 character_limiter 섹션을 읽음). 여기에 귀하의 질문과 관련된 두 가지 기능이 있습니다.

    codeigniter 프레임 워크에는 "텍스트 도우미"라고하는 도우미가 들어 있습니다. 다음은 적용 가능한 codeigniter 사용자 설명서의 일부 문서입니다. http://codeigniter.com/user_guide/helpers/text_helper.html (단지 word_limiter 및 character_limiter 섹션을 읽음). 여기에 귀하의 질문과 관련된 두 가지 기능이 있습니다.

    if ( ! function_exists('word_limiter'))
    {
        function word_limiter($str, $limit = 100, $end_char = '&#8230;')
        {
            if (trim($str) == '')
            {
                return $str;
            }
    
            preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/', $str, $matches);
    
            if (strlen($str) == strlen($matches[0]))
            {
                $end_char = '';
            }
    
            return rtrim($matches[0]).$end_char;
        }
    }
    

    if ( ! function_exists('character_limiter'))
    {
        function character_limiter($str, $n = 500, $end_char = '&#8230;')
        {
            if (strlen($str) < $n)
            {
                return $str;
            }
    
            $str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));
    
            if (strlen($str) <= $n)
            {
                return $str;
            }
    
            $out = "";
            foreach (explode(' ', trim($str)) as $val)
            {
                $out .= $val.' ';
    
                if (strlen($out) >= $n)
                {
                    $out = trim($out);
                    return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
                }       
            }
        }
    }
    
  6. ==============================

    6.단어를 분리하지 않도록주의해서 자르려면 다음을 할 수 있습니다.

    단어를 분리하지 않도록주의해서 자르려면 다음을 할 수 있습니다.

    function ellipse($str,$n_chars,$crop_str=' [...]')
    {
        $buff=strip_tags($str);
        if(strlen($buff) > $n_chars)
        {
            $cut_index=strpos($buff,' ',$n_chars);
            $buff=substr($buff,0,($cut_index===false? $n_chars: $cut_index+1)).$crop_str;
        }
        return $buff;
    }
    

    $ str이 $ n_chars보다 짧 으면 손대지 않는다.

    $ str이 $ n_chars와 같으면 그것을 반환합니다.

    $ str이 $ n_chars보다 길면 $ n_chars 대신에 $ str이 오히려 잘리지 않게된다.

    참고 : HTML의 경우이 메서드는 모든 태그를 제거합니다.

  7. ==============================

    7.하위 문자열 사용

    하위 문자열 사용

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

    $foo = substr("abcde",0, 3) . "...";
    
  8. ==============================

    8.

    if(strlen($text) > 10)
         $text = substr($text,0,10) . "...";
    
  9. ==============================

    9.내가 사용한 함수 :

    내가 사용한 함수 :

    function cutAfter($string, $len = 30, $append = '...') {
            return (strlen($string) > $len) ? 
              substr($string, 0, $len - strlen($append)) . $append : 
              $string;
    }
    

    그것을 실제로보십시오.

  10. ==============================

    10.이것이 제가하는 것입니다

    이것이 제가하는 것입니다

        function cutat($num, $tt){
            if (mb_strlen($tt)>$num){
                $tt=mb_substr($tt,0,$num-2).'...';
            }
            return $tt;
        }
    

    여기서 $ num은 문자의 수를 나타내고 $ tt는 조작을위한 문자열을 나타냅니다.

  11. ==============================

    11.이 용도로 사용할 함수를 개발했습니다.

    이 용도로 사용할 함수를 개발했습니다.

     function str_short($string,$limit)
            {
                $len=strlen($string);
                if($len>$limit)
                {
                 $to_sub=$len-$limit;
                 $crop_temp=substr($string,0,-$to_sub);
                 return $crop_len=$crop_temp."...";
                }
                else
                {
                    return $string;
                }
            }
    

    당신은 string과 limite 함수를 호출한다. 예 : str_short ( "hahahahah", 5); 그것은 당신의 문자열을 자르고 마지막에 "..."를 추가 할 것입니다.  :)

  12. ==============================

    12.함수 (반복 사용) 및 동적 제한 길이를 작성하려면 다음을 사용하십시오.

    함수 (반복 사용) 및 동적 제한 길이를 작성하려면 다음을 사용하십시오.

    function string_length_cutoff($string, $limit, $subtext = '...')
    {
        return (strlen($string) > $limit) ? substr($string, 0, ($limit-strlen(subtext))).$subtext : $string;
    }
    
    // example usage:
    echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26);
    
    // or (for custom substitution text
    echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26, '..');
    
  13. ==============================

    13.다음과 같이 코드를 추상화하는 것이 가장 좋습니다 (제한은 선택 사항이며 기본값은 10입니다).

    다음과 같이 코드를 추상화하는 것이 가장 좋습니다 (제한은 선택 사항이며 기본값은 10입니다).

    print limit($string);
    
    
    function limit($var, $limit=10)
    {
        if ( strlen($var) > $limit )
        {
            return substr($string, 0, $limit) . '...';
        }
        else
        {
            return $var;
        }
    }
    
  14. ==============================

    14.이것이 가장 빠른 솔루션인지 확실하지 않지만, 가장 짧은 솔루션 인 것처럼 보입니다.

    이것이 가장 빠른 솔루션인지 확실하지 않지만, 가장 짧은 솔루션 인 것처럼 보입니다.

    $result = current(explode("\n", wordwrap($str, $width, "...\n")));
    

    추신 몇 가지 예를 보려면 https://stackoverflow.com/a/17852480/131337을 참조하십시오.

  15. ==============================

    15.substr ()이 가장 좋을 것입니다. 또한 문자열의 길이를 먼저 확인해야합니다.

    substr ()이 가장 좋을 것입니다. 또한 문자열의 길이를 먼저 확인해야합니다.

    $str = 'someLongString';
    $max = 7;
    
    if(strlen($str) > $max) {
       $str = substr($str, 0, $max) . '...';
    }
    

    wordwrap은 문자열을 다듬지 않고 그냥 나눕니다.

  16. ==============================

    16.$ width = 10;

    $ width = 10;

    $a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);
    

    또는 단어 랩으로

    $a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);
    
  17. ==============================

    17.이 솔루션은 단어를 자르지 않으며 첫 번째 공간 다음에 3 개의 점을 추가합니다. @ Raccoon29 솔루션을 편집했고 모든 기능을 mb_ 기능으로 대체하여 아랍어와 같은 모든 언어에서 작동합니다.

    이 솔루션은 단어를 자르지 않으며 첫 번째 공간 다음에 3 개의 점을 추가합니다. @ Raccoon29 솔루션을 편집했고 모든 기능을 mb_ 기능으로 대체하여 아랍어와 같은 모든 언어에서 작동합니다.

    function cut_string($str, $n_chars, $crop_str = '...') {
        $buff = strip_tags($str);
        if (mb_strlen($buff) > $n_chars) {
            $cut_index = mb_strpos($buff, ' ', $n_chars);
            $buff = mb_substr($buff, 0, ($cut_index === false ? $n_chars : $cut_index + 1), "UTF-8") . $crop_str;
        }
        return $buff;
    }
    
  18. ==============================

    18.

    $yourString = "bla blaaa bla blllla bla bla";
    $out = "";
    if(strlen($yourString) > 22) {
        while(strlen($yourString) > 22) {
            $pos = strrpos($yourString, " ");
            if($pos !== false && $pos <= 22) {
                $out = substr($yourString,0,$pos);
                break;
            } else {
                $yourString = substr($yourString,0,$pos);
                continue;
            }
        }
    } else {
        $out = $yourString;
    }
    echo "Output String: ".$out;
    
  19. from https://stackoverflow.com/questions/3161816/get-first-n-characters-of-a-string by cc-by-sa and MIT license