Page 1 sur 1
transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 17:57
par gentil_ecureuil
bonjour,
J'ai une commande bash pour transformer des numéros de téléphone qui viennent de nextcloud pour les mettre dans la vcard pour mes téléphones fixes gigaset.
awk -v FS=OFS=$separ 'NR==1 {print ; next} {gsub(" ","",$8); gsub("+33","70",$8); gsub(" ","",$9); gsub("+33","70",$9); gsub(" ","",$10); gsub("+33","70",$10); print '
En gros, il transforme un numéro de téléphone de ce type '+33 1 23 45 67 89' en '70123456789'
Dans mon php, j'ai déjà la notion à qui va être destinée la vcard.
C'est facile à faire en php cette transformation?
Merci
Anne
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 18:26
par Saian
Si l'idée c'est supprimer les espaces et remplacer le +33 du début en 70 si présent, oui c'est simple :
$phone = '+33 1 23 45 67 89';
$phone = str_replace([' ', '+33'], ['', '70'], $phone);
echo $phone;// 70123456789
https://www.php.net/manual/fr/function.str-replace.php
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 18:52
par gentil_ecureuil
Ce que j'avais fait :
$phone0 = str_replace(" ", "",$phone0);
$phone0 = str_replace("+33", "70",$phone0);
print "TEL;HOME:".$phone0.$fin_ligne; // phone0
J'avais testé cela...
il disait que str_replace était plus léger que preg_replace
Ton truc est mieux, c'est fait en une ligne!
Merci
Anne
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 19:03
par Saian
Ce que tu avais fait est bien mais en effet tu peux le faire en une ligne en passant un tableau de $search et un tableau de $replace. Le premier search est remplacé par le premier replace le second par le second etc.
Le preg_replace n'est pas ici nécessaire car il n'y a pas besoin d'écrire un pattern de recherche complexe.
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 19:58
par gentil_ecureuil
PHP Parse error: syntax error, unexpected '[', expecting ')' in
$phone0 = str_replace([' ', '+33'],['', '70'], $phone0);
J'ai essayé
$phone0 = str_replace([" ", "+33"], ["", "70"], $phone0);
Où est l'erreur?
Anne
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 20:02
par Saian
La version de php peut être.
$phone0 = str_replace(array(' ', '+33'), array('', '70'), $phone0);
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 21 févr. 2020, 20:07
par @rthur
Effectivement les crochets pour remplacer le mots-clés Array() ont été intégré en PHP 5.4
Par contre, si tu en as la possibilité, il est important de passer à une version plus récente de PHP car la version 5.4 est sortie en 2012 et n'a plus de support depuis 5 ans...
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 22 févr. 2020, 02:28
par Saian
PS : il n'y a pas de différence entre les simples et doubles guillemets si ce n'est qu'avec des doubles, php va interpréter les variables présentes dans la chaine, ce qu'il ne fait pas quand la chaîne est entre simples guillemets.
$simple = 'double';
echo "simple ou double ? $simple";// simple ou double ? double
echo 'simple ou double ? $simple';// simple ou double ? $simple
PPS : j'oubliais aussi pour les guillemets doubles, l'interprétation d'un certain nombre de caractères spéciaux comme \t \r \n etc
https://www.php.net/manual/fr/language.types.string.php
Y a pleins d'exemples intéressants. ^^
Re: transformer une commande bash pour l'inclure dans mon php
Posté : 22 févr. 2020, 17:52
par gentil_ecureuil
mon serveur est avec php 5.3.3, trouvé avec phpinfo.
Mais il y a aussi php56, php70, php71, php72, php73 suite à des contribs que j'ai installé sur mon serveur.
On me dit d'installer php software collection:
https://www.softwarecollections.org/en/ ... php&page=1
https://blog.remirepo.net/
Mon serveur est basé sur centos.
Je suis entrain de regarder cela.
Anne