Maison >développement back-end >tutoriel php >Explication détaillée de la fonction de chaîne d'interception du modèle ThinkPHP substr

Explication détaillée de la fonction de chaîne d'interception du modèle ThinkPHP substr

高洛峰
高洛峰original
2017-01-11 10:52:092379parcourir

L'exemple de cet article décrit l'utilisation de la fonction d'interception de caractères msubstr() dans thinkphp. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

ThinkPHP a une fonction d'interception de caractères intégrée msubstr() comme suit :

msubstr($str, $start=0 , $length, $charset= "utf-8", $suffix=true)

$str : la chaîne à intercepter
$start=0 : position de départ, commençant à 0 par défaut
$length : longueur d'interception
$charset="utf-8" : encodage des caractères, UTF-8 par défaut
$suffix=true : s'il faut afficher une ellipse après le caractère intercepté, la valeur par défaut est true pour afficher, false pour ne pas afficher

appel Comme suit

{$vo.title|msubstr=5,5,'utf-8',false}

Explication : intercepter la chaîne $vo.title, à partir du 5ème caractère, intercepter 5 caractères, les encoder en UTF-8, et ne pas afficher les points de suspension

Utilisation récente de thinkphp Lors de l'écriture d'un programme, j'ai rencontré une erreur du type Appel à la fonction non définie msubstr()

Analyse des causes :

utilisé msubstr|. msubstr=###,5,5, dans le modèle front-end. 'utf-8', false Cette fonction est utilisée pour intercepter le nombre de caractères

Des problèmes surviennent :

Lorsque j'ai commencé à écrire localement, le système d'exploitation Windows n'a pas signalé d'erreur, puis j'ai téléchargé le projet sur le serveur Linux. Lors de l'accès à la réception, l'erreur Appel à la fonction non définie msubstr() est signalée ; > Dépannage :

J'ai commencé à voir des amis le publier sur le site officiel de Think pour définir cela dans la bibliothèque de fonctions publiques ; la fonction est la suivante :

Après. est défini, il peut être utilisé localement ; j'ai également vu des amis dire que placer cette fonction sous le fichier de fonction principale de Thinkphp peut résoudre le problème de l'appel à une fonction non définie msubstr(). Lors du signalement d'une erreur, il est indiqué qu'elle n'est pas valide si je le fais. placez-le sous common.php dans le répertoire Common de mon projet, mais je ne souhaite pas modifier les fichiers principaux de Think pour faciliter les futures mises à jour
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;
}

Solution :

Fichiers fixes sous Linx ; Concernant le problème de capitalisation, après une inspection minutieuse, j'ai découvert que puisque le projet ne génère pas automatiquement common.php, il doit être construit manuellement. Il s'avère que j'ai écrit le C dans common.php sous Common sous le projet local en majuscule. , puis vérifié le noyau officiel Common. Le C dans common.php est en minuscule. Finalement, le problème a été résolu en le changeant en minuscules

Enregistrez-le pour éviter de commettre des erreurs aussi mineures à l'avenir !

J'espère que cet article vous aidera à concevoir des programmes PHP basés sur le framework thinkPHP.

Pour des explications plus détaillées sur la fonction de chaîne d'interception du modèle ThinkPHP substr, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn