web-dev-qa-db-fra.com

chaîne php en int

$a = '88';
$b = '88 8888';

echo (int)$a;
echo (int)$b;

comme prévu, les deux produisent 88. Quelqu'un sait s'il existe une chaîne à la fonction int qui fonctionnera pour la valeur de $ b et produira 888888? J'ai googlé un peu sans aucune chance.

Merci

24
agh

Vous pouvez supprimer les espaces avant de lancer int:

(int)str_replace(' ', '', $b);

En outre, si vous souhaitez supprimer d'autres séparateurs de chiffres couramment utilisés (tels que ,), vous pouvez attribuer un tableau à la fonction (attention, dans certains pays, comme le mien par exemple, la virgule est utilisée pour la notation de fraction):

(int)str_replace(array(' ', ','), '', $b);
40
Gabi Purcaru

Si vous voulez ne laisser que des chiffres, utilisez preg_replace comme: (int) preg_replace ("/ [^\d] + /", "", $ b).

12
XzKto

Remplacez les espaces, puis convertissez-les (à l'aide de la fonction intval ou par une conversion de type régulière)

intval(str_replace(" ", "", $b))
1
Silfverstrom

Que voulez-vous même que le résultat soit? 888888? Si c'est le cas, supprimez simplement les espaces avec str_replace, puis convertissez-les.

1
Delan Azabani

Vous pouvez utiliser le str_replace lorsque vous déclarez votre variable $ b comme ceci:

$b = str_replace(" ", "", '88 8888');
echo (int)$b;

Ou la plus belle solution consiste à utiliser intval:

$b = intval(str_replace(" ", "", '88 8888');
echo $b;

Si votre valeur '88 888' provient d'une autre variable, remplacez simplement '88 888' par la variable qui contient votre chaîne.

0
Fizik26

Utilisez str_replace pour supprimer les espaces en premier?

0
ManseUK