Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Interception-String-Funktion des ThinkPHP-Vorlagensubstr

Detaillierte Erläuterung der Interception-String-Funktion des ThinkPHP-Vorlagensubstr

高洛峰
高洛峰Original
2017-01-11 10:52:092364Durchsuche

Das Beispiel in diesem Artikel beschreibt die Verwendung der Zeichenabfangfunktion msubstr() in thinkphp. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

ThinkPHP verfügt über eine integrierte Zeichenabfangfunktion msubstr() wie folgt:

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

$str: die abzufangende Zeichenfolge
$start=0: Startposition, standardmäßig beginnend bei 0
$length: Abfanglänge
$charset="utf-8": Zeichenkodierung, Standard UTF-8
$suffix=true: Gibt an, ob nach dem abgefangenen Zeichen eine Ellipse angezeigt werden soll, die Standardeinstellung ist true, um anzuzeigen, false, um nicht anzuzeigen

Aufruf wie folgt

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

Erklärung: Fangen Sie die Zeichenfolge $vo.title ab dem 5. Zeichen ab, fangen Sie 5 Zeichen ab, kodieren Sie sie als UTF-8 und Ellipsen nicht anzeigen

Kürzlich bei der Verwendung von thinkphp Beim Schreiben eines Programms ist ein Fehler wie „Aufruf der undefinierten Funktion msubstr()“ aufgetreten. Ursachenanalyse:

verwendet msubstr| msubstr=###,5,5, in der Frontend-Vorlage, false Diese Funktion wird verwendet, um die Anzahl der Zeichen abzufangen.

Es treten Probleme auf:

Als ich lokal mit dem Schreiben begann, meldete das Windows-Betriebssystem keinen Fehler, und dann habe ich das Projekt auf den Linux-Server hochgeladen. Beim Zugriff auf die Rezeption wurde der Fehler „Aufruf der undefinierten Funktion msubstr()“ gemeldet > Problembehebung:

Ich habe gesehen, dass einige Freunde es auf der offiziellen Think-Website gepostet haben, um dies in der öffentlichen Funktionsbibliothek zu definieren. Funktion ist wie folgt:

Danach definiert ist, kann es lokal verwendet werden. Ich habe auch einige Freunde gesehen, die sagten, dass das Einfügen dieser Funktion in die Thinkphp-Kernfunktionsdatei das Problem des Aufrufs einer undefinierten Funktion lösen kann msubstr() Wenn ich einen Fehler melde, heißt es, dass er ungültig ist Platzieren Sie es unter common.php im Common-Verzeichnis meines Projekts, aber ich möchte die Kerndateien von Think nicht ändern, um zukünftige Upgrades zu erleichtern.

Lösung:
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;
}

Immer noch Dateien unter Linx In Bezug auf das Groß- und Kleinschreibungsproblem stellte ich nach sorgfältiger Prüfung fest, dass das Projekt common.php nicht automatisch generiert und daher manuell erstellt werden muss. Es stellte sich heraus, dass ich das C in common.php unter Common unter dem lokalen Projekt in Großbuchstaben geschrieben habe , und überprüfte dann den offiziellen Kern Common. Das C in common.php ist kleingeschrieben. Schließlich wurde das Problem gelöst, indem man es in Kleinbuchstaben umwandelte.

Notieren Sie es, um solche dummen Fehler in Zukunft zu vermeiden!

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem thinkPHP-Framework hilfreich sein wird.

Ausführlichere Erläuterungen zur Interception-String-Funktion des ThinkPHP-Template-Substr finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn