Maison  >  Article  >  cadre php  >  Fonction d'interception de caractères msubstr() dans thinkphp

Fonction d'interception de caractères msubstr() dans thinkphp

PHPz
PHPzavant
2020-09-25 16:01:152571parcourir

Fonction d'interception de caractères msubstr() dans thinkphp

Tutoriels associés recommandés : Tutoriel du framework thinkphp

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, en commençant de 0 par par défaut

  • $length : longueur d'interception

  • $charset="utf-8″ : encodage de caractères, UTF-8 par défaut

  • $suffix=true : Indique 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.

est appelé comme. suit l'explication

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

 : Interceptez la chaîne $vo.title, à partir du 5ème caractère, interceptez 5 caractères, encodez-la en UTF-8 et n'affichez pas les points de suspension

Récemment, lorsque en écrivant un programme avec thinkphp, j'ai rencontré une erreur du type Call to undefined function msubstr() ,

Analyse des causes :

La fonction msubstr|msubstr=###,5,5, 'utf-8',false est utilisé dans le modèle frontal Intercepter le nombre de caractères

Le problème se produit :

Quand j'ai commencé à écrire localement, le Le système d'exploitation Windows n'a pas signalé d'erreur. Plus tard, lorsque j'ai téléchargé le projet sur le serveur Linux, il a signalé une erreur lors de l'accès à la réception. Erreur d'appel à la fonction msubstr() ; :

J'ai commencé à voir des amis publier sur le site officiel de Think qu'ils devaient être sous la bibliothèque de fonctions publiques. Définissez cette fonction ; la fonction est la suivante :

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;
 
}

Après cela ; 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 à niveau

Solution :

C'est toujours un problème de dossier sous Linx. Après une inspection minutieuse, j'ai découvert que puisque le projet ne générera 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 majuscules, puis coché Le C dans common.php sous le noyau officiel Common est en minuscules. 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 !

Pour plus de connaissances sur la programmation, veuillez visiter :

Introduction à la programmation

 ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer