이 기사의 예에서는 thinkphp의 문자 가로채기 함수 msubstr()을 사용하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
ThinkPHP에는 다음과 같은 문자 차단 기능 msubstr()이 내장되어 있습니다.
msubstr($str, $start=0 , $length, $charset= "utf-8", $suffix=true)
$str: 차단할 문자열
$start=0: 시작 위치, 기본적으로 0부터 시작
$length: 차단 길이
$charset="utf-8": 문자 인코딩, 기본 UTF-8
$suffix=true: 차단된 문자 뒤에 타원을 표시할지 여부, 기본값은 true로 표시됩니다. 표시하지 않으려면 false
호출 다음과 같습니다
{$vo.title|msubstr=5,5,'utf-8',false}
설명: $vo.title 문자열을 5번째 문자부터 가로채서 5자를 가로채서 UTF-8로 인코딩하고 줄임표를 표시하지 마세요
최근 thinkphp를 사용하여 프로그램을 작성할 때 Call to unundefined function msubstr()과 같은 오류가 발생했습니다.
원인 분석:
msubstr| msubstr=###,5,5, 프런트 엔드 템플릿에서 'utf-8', false 이 함수는 문자 수를 가로채는 데 사용됩니다.
문제 발생:
로컬에서 쓰기 시작했는데 Windows 운영 체제에서 오류가 보고되지 않았고, 이후 Linux 서버에 프로젝트를 업로드했습니다. 정의되지 않은 함수 msubstr()에 대한 오류가 보고되었습니다. > 문제 해결:
몇몇 친구들이 공식 웹사이트에 게시하여 공개 함수 라이브러리 아래에 이를 정의하는 것을 보기 시작했습니다.
그 이후에는 다음과 같습니다. 이 함수를 Thinkphp 핵심 함수 파일 아래에 넣으면 정의되지 않은 함수 msubstr() 호출 문제를 해결할 수 있다고 말하는 친구도 있었습니다. 오류를 보고할 때 다음과 같은 경우 유효하지 않다고 합니다. 내 프로젝트의 Common 디렉터리에 있는 common.php 아래에 배치하지만 향후 업그레이드를 용이하게 하기 위해 Think의 핵심 파일을 변경하고 싶지 않습니다.function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=false){ if(function_exists("mb_substr")){ if($suffix) return mb_substr($str, $start, $length, $charset)."..."; else return mb_substr($str, $start, $length, $charset); }elseif(function_exists('iconv_substr')) { if($suffix) return iconv_substr($str,$start,$length,$charset)."..."; else return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); if($suffix) return $slice."…"; return $slice; }
해결책:
스틸 파일은 Linx에 있습니다. 대문자 사용 문제에 대해서는 자세히 조사한 결과 프로젝트가 common.php를 자동으로 생성하지 않기 때문에 수동으로 빌드해야 한다는 것을 발견했습니다. 로컬 프로젝트 아래 Common.php에 C를 대문자로 쓴 것으로 나타났습니다. , 그리고 나서 common.php의 C가 소문자인지 확인했습니다. 드디어 소문자로 바꿔서 문제가 해결되었습니다.
앞으로 이런 멍청한 실수를 하지 않도록 녹음해두세요!
이 글이 thinkPHP 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.
ThinkPHP 템플릿 substr 차단 문자열 기능에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!