CFLib.org est la collection awesomest des fonctions définies par l'utilisateur.
Il y a une UDF qui fait exactement ce que vous voulez: SubStr
Il imite le comportement de php « substr », enfermant le milieu, à gauche et fonctionnalités à droite dans une seule fonction et en ajoutant quelques extra-fonctionnalité et astuce. Pour instance: - substr ("abcdef", -2) est le même que le droit ("abcdef", 2), - substr ("abcdef", 1, 3) est le même que gauche ("abcdef" , 3), - substr ("abcdef", 2, 4) est le même que mid ("abcdef", 2, 4) Dans le même temps, il permet les choses comme - substr ("abcdef", 2) au lieu de mid ("abcdef", 2, len ("abcdef") - 2) - substr ("abcdef", -2, 1) pour dire "commencer 2 caractères avant la fin de la chaîne, et de prendre 1 car. " - substr ("abcdef", -4, -1) pour dire "commencer 4 caractères avant la fin de la chaîne, et jeter le dernier caractère." Il renvoie une chaîne vide en cas d'index incohérents.
est ici la source:
<cfscript>
/**
* Returns the substring of a string. It mimics the behaviour of the homonymous php function so it permits negative indexes too.
*
* @param buf The string to parse. (Required)
* @param start The start position index. If negative, counts from the right side. (Required)
* @param length Number of characters to return. If not passed, returns from start to end (if positive start value). (Optional)
* @return Returns a string.
* @author Rudi Roselli Pettazzi ([email protected])
* @version 2, July 2, 2002
*/
function SubStr(buf, start) {
// third argument (optional)
var length = 0;
var sz = 0;
sz = len(buf);
if (arrayLen(arguments) EQ 2) {
if (start GT 0) {
length = sz;
} else if (start LT 0) {
length = sz + start;
start = 1;
}
} else {
length = Arguments[3];
if (start GT 0) {
if (length LT 0) length = 1+sz+length-start;
} else if (start LT 0) {
if (length LT 0) length = length-start;
start = 1+sz+start;
}
}
if (isNumeric(start) AND isNumeric(length) AND start GT 0 AND length GT 0) return mid(buf, start, length);
else return "";
}
</cfscript>
Ne serait pas substr ("abcdef", 1); retourne "bcdef"? – mbeckish
Je ne connais pas php, mais d'après les docs que j'ai cherché, substr ('abcdef', 1); renvoie 'bcdef': http://php.net/manual/fr/function.substr.php Donc, il agit exactement comme Mid() de CF. Peut-être tort, tho –
@Edward M Smith - Pas exactement la même chose. Mid a le paramètre count. Avec substr de PHP, vous n'avez pas besoin de lui dire combien de caractères à saisir. – mbeckish