뉴스 스크립트를 작성 중이며 전체 텍스트 콘텐츠에서 텍스트를 거의 가져 오지 못하는 요약 함수를 만들고 싶습니다. 이 함수는 200 자의 전체 텍스트를 얻은 다음이 200 자의 마지막 공백을 검색합니다. 이 함수는 HTML 또는 기타 코드를 무시하고 전체 텍스트 내용의 처음 200 자만 표시해야합니다.PHP - 기사 요약
어떤 기능이 내 문제와 그 기능을 수행하는 데 가장 좋습니까?
뉴스 스크립트를 작성 중이며 전체 텍스트 콘텐츠에서 텍스트를 거의 가져 오지 못하는 요약 함수를 만들고 싶습니다. 이 함수는 200 자의 전체 텍스트를 얻은 다음이 200 자의 마지막 공백을 검색합니다. 이 함수는 HTML 또는 기타 코드를 무시하고 전체 텍스트 내용의 처음 200 자만 표시해야합니다.PHP - 기사 요약
어떤 기능이 내 문제와 그 기능을 수행하는 데 가장 좋습니까?
를 체크 아웃 CodeIgniter
프레임 워크에서이 도우미 함수 :
/**
* Character Limiter
*
* Limits the string based on the character count. Preserves complete words
* so the character count may not be exactly as specified.
*
* @access public
* @param string
* @param integer
* @param string the end character. Usually an ellipsis
* @return string
*/
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;
}
}
}
당신은 기능을 사용할 수 있습니다 : 당신이 HTML 태그를 피하기 위해 필요한 경우
echo character_limiter($text, 200);
, 당신은 호출하기 전에 strip_tags
기능을 사용할 수 있습니다 character_limiter
기능.
가장 좋은 해결책은 편집기에서 수동으로 채워지는 데이터베이스의 지정된 "요약"필드 일 것입니다.
앞으로 많은 골칫거리를 줄일 수 있습니다.
필자도이 필드를 가지고 있지만, 기사 작성자가 잊어 버렸거나 요약을 입력하고 싶지 않은 경우 이는 대체적입니다. – user1257255
이 작업을 수행 할 수있는 substr($string, $position, $length)
이라는 간단한 기능이 있습니다.
$brief = substr($bigContent, 0, 200); //for 200 chars
단순한'substr'보다 조금 더 많은 로직이 필요하다고 생각합니다. 아이디어는 200 단어 길이에 맞는 마지막 단어 뒤에 텍스트를 끝내는 것입니다. 그렇지 않으면 단어의 중간에 기사가 끝날 수 있습니다. –
@mazzucci, Oh .. 제발 복잡해지기 시작하지 마세요. 이미 혼자만의 정신없는 모듈을 코딩했습니다. : P – Starx
나는 다음과 같은 기능을 사용할처럼 사용하지만, 여전히 전체 단어를 유지합니다.
function teaser($input, $length = 200)
{
if(strlen($input) <= $length)
return $input;
$parts = explode(" ", $input);
while(strlen(implode(" ", $parts)) > $length)
array_pop($parts);
return implode(" ", $parts);
}
간단하고 간단합니다.
그리고 단축 된 문자열의 끝에 "..."과 같은 것을 넣어야 할 필요성을 느낀다면 return 줄을'return implode ("", $ parts)와 같이 확장하면됩니다. "...", " – Repox
질문을 게시하기 전에 아무 것도 시도하지 않으셨습니까? – ilanco
No는 어떤 기능이이 문제에 가장 적합한 지 모르므로 – user1257255
작성해야합니다. –