6
votes

PHP: Comment convertir 0777 (une octale) à une chaîne?

J'ai une octale que j'utilise pour définir des autorisations sur un répertoire. xxx

et je veux le comparer à une chaîne xxx

Quelle serait la meilleure façon de faire cette comparaison?

php

0 commentaires

6 Réponses :


2
votes

Le meilleur moyen est de:

if ('0777' != "0" . sprintf("%o", $permissions))


0 commentaires

0
votes

Il suffit de jeter l'entier comme:

if('0777' != "$permissions") { // do something }


2 commentaires

$ autorisations n'est pas un entier, c'est une octale


@andrew Jetez un coup d'oeil à uk3.php.net/manual/fr/function. mkdir.php et vous verrez que mkdir () attend un int



-1
votes

hm ... type casting?

if ((string)$permissions != '0777') {
//do something
}


0 commentaires

6
votes

Pourquoi pas, dans votre cas, comparez simplement les deux valeurs numériques?

Comme ceci: xxx


Néanmoins, pour convertir une valeur à une chaîne contenant la représentation octale d'un numéro, vous pouvez utiliser sprintf , et le spécificateur de type O .

Par exemple, la partie suivante du code: < / p> xxx

vous obtiendra: xxx


1 commentaires

Je ne pense pas que c'est ce qu'il cherche. Ceci est en ce qui concerne les autorisations UNIX. 0777 équivaut à un + rwx



4
votes

Faites-le l'inverse de l'inverse: Convertissez la chaîne en un numéro et comparez les chiffres:

if (intval($expectedPermissions, 8) != $permissions) { // 8 specifies octal base for conversion
  // do something
}


0 commentaires

2
votes

Vérifiez la fonction BASE_CONVERT.

Représentation des chaînes octales d'un nombre xxx

Vous pouvez faire la conversion avec n'importe quel type hexagonal, octal ....


0 commentaires