문자열의 처음 n 문자 가져 오기
PHP문자열의 처음 n 문자 가져 오기
어떻게하면 PHP에서 문자열의 처음 n 문자를 얻을 수 있습니까? 문자열을 특정 수의 문자로 잘라내고 필요한 경우 '...'을 추가하는 가장 빠른 방법은 무엇입니까?
해결법
-
==============================
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.이 기능은 버전 4.0.6부터 PHP에 내장되었습니다. 문서를 참조하십시오.
이 기능은 버전 4.0.6부터 PHP에 내장되었습니다. 문서를 참조하십시오.
echo mb_strimwidth('Hello World', 0, 10, '...'); // outputs Hello W...
trimmarker (위 줄임표)는 잘린 길이에 포함됩니다.
-
==============================
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.때로는 문자열을 마지막 완전한 단어로 제한해야합니다. 즉, 두 번째 마지막 단어로 끝나는 대신 마지막 단어가 손상되지 않도록해야합니다.
때로는 문자열을 마지막 완전한 단어로 제한해야합니다. 즉, 두 번째 마지막 단어로 끝나는 대신 마지막 단어가 손상되지 않도록해야합니다.
예 : 우리는 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.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 = '…') { 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 = '…') { 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.단어를 분리하지 않도록주의해서 자르려면 다음을 할 수 있습니다.
단어를 분리하지 않도록주의해서 자르려면 다음을 할 수 있습니다.
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.하위 문자열 사용
하위 문자열 사용
http://php.net/manual/en/function.substr.php
$foo = substr("abcde",0, 3) . "...";
-
==============================
8.
if(strlen($text) > 10) $text = substr($text,0,10) . "...";
-
==============================
9.내가 사용한 함수 :
내가 사용한 함수 :
function cutAfter($string, $len = 30, $append = '...') { return (strlen($string) > $len) ? substr($string, 0, $len - strlen($append)) . $append : $string; }
그것을 실제로보십시오.
-
==============================
10.이것이 제가하는 것입니다
이것이 제가하는 것입니다
function cutat($num, $tt){ if (mb_strlen($tt)>$num){ $tt=mb_substr($tt,0,$num-2).'...'; } return $tt; }
여기서 $ num은 문자의 수를 나타내고 $ tt는 조작을위한 문자열을 나타냅니다.
-
==============================
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.함수 (반복 사용) 및 동적 제한 길이를 작성하려면 다음을 사용하십시오.
함수 (반복 사용) 및 동적 제한 길이를 작성하려면 다음을 사용하십시오.
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.다음과 같이 코드를 추상화하는 것이 가장 좋습니다 (제한은 선택 사항이며 기본값은 10입니다).
다음과 같이 코드를 추상화하는 것이 가장 좋습니다 (제한은 선택 사항이며 기본값은 10입니다).
print limit($string); function limit($var, $limit=10) { if ( strlen($var) > $limit ) { return substr($string, 0, $limit) . '...'; } else { return $var; } }
-
==============================
14.이것이 가장 빠른 솔루션인지 확실하지 않지만, 가장 짧은 솔루션 인 것처럼 보입니다.
이것이 가장 빠른 솔루션인지 확실하지 않지만, 가장 짧은 솔루션 인 것처럼 보입니다.
$result = current(explode("\n", wordwrap($str, $width, "...\n")));
추신 몇 가지 예를 보려면 https://stackoverflow.com/a/17852480/131337을 참조하십시오.
-
==============================
15.substr ()이 가장 좋을 것입니다. 또한 문자열의 길이를 먼저 확인해야합니다.
substr ()이 가장 좋을 것입니다. 또한 문자열의 길이를 먼저 확인해야합니다.
$str = 'someLongString'; $max = 7; if(strlen($str) > $max) { $str = substr($str, 0, $max) . '...'; }
wordwrap은 문자열을 다듬지 않고 그냥 나눕니다.
-
==============================
16.$ width = 10;
$ width = 10;
$a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);
또는 단어 랩으로
$a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);
-
==============================
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.
$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;
from https://stackoverflow.com/questions/3161816/get-first-n-characters-of-a-string by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP - SSL 인증서 오류 : 로컬 발급자 인증서를 가져올 수 없습니다. (0) | 2018.09.11 |
---|---|
isset와 array_key_exists의 차이점 (0) | 2018.09.11 |
간단한 XML - 노드에서 콜론 다루기 (0) | 2018.09.11 |
echo 문 내부를 차단한다면? (0) | 2018.09.11 |
다차원 배열의 데이터 임플리트 (0) | 2018.09.11 |