Convertir Script Python en php

Résolu
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je cherche une manière de convertir un script Python en php ou réécrire le script en php.
Le script permet de générer un IBAN irlandais correcte.

import requests
import re
import string
import random

URL_IBAN_GENERATOR = "https://bank.codes/iban/generate/ireland/"

def random_generator(size, chars):
    return ''.join(random.choice(chars) for _ in range(size))

def bank_code():
    return "PFSR"

def branch_code():
    return 991070

def account_number():
    return random_generator(size=8, chars=string.digits)

r = requests.post(URL_IBAN_GENERATOR, data={ "input_0": bank_code(), "input_1": branch_code(), "input_2": account_number() })
print(r.status_code, r.reason)


match = re.search("IE[0-9]{2}[A-Z]{4}[0-9]{14}", r.text)

if match:
    print(match.group())
else:
    print("iban not found")


Je vous prie de m'aider
Merci
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

Visiblement ce script fait une requête POST vers l'url https://bank.codes/iban/generate/ireland/
avec 3 variables

"input_0": bank_code(), "input_1": branch_code(), "input_2": account_number()

Sachant que bank_code = PFSR
branch_code = 991070
account_number est un nombre aléatoire de 8 chiffres.

En php, tu peux utiliser du CURL pour faire cette requête POST
Et tu trouveras sans mal sur internet des scripts de génération de nombres aléatoires.


Et pour finir, ce script vérifie que le résultat obtenu est conforme à la regex IE[0-9]{2}[A-Z]{4}[0-9]{14}

0
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Voici ce que j'ai pu faire mais sans succès
<?php
/* Utilisation de Curl */
 
//On stock la valeur des variables POST
$account_number = mt_rand(10010350,90141045);
$pattern='IE[0-9]{2}[A-Z]{4}[0-9]{14}';
 
//Initialisation de curl dans $curl
$curl = curl_init();
 
curl_setopt($curl, CURLOPT_URL, "https://bank.codes/iban/generate/ireland/"); //Page sur laquelle envoyer les POST autrement dit la page vers laquelle pointe le formulaire

$data=array(
'input_0' => 'PFSR'    
'input_1' => 991070,
'input_2' => $account_number;) 
curl_setopt($curl, CURLOPT_POST, 3);
curl_setopt($curl, CURLOPT_POSTFIELDS,$branch_code, $bank_code, $account_number); //On envoie les valeurs
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 3);
$data = curl_exec($curl); //On place le code de la page
 
//Fin de Curl
curl_close($curl);

 
/* Affichage du code */
 
//ech
echo preg_match($pattern) ;
?>
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Ton script devrait ressembler à un truc du genre
<?php

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

/* Utilisation de Curl */
 
//On stock la valeur des variables POST
$account_number = mt_rand(10010350,90141045);
$pattern='IE[0-9]{2}[A-Z]{4}[0-9]{14}';
 
 
$data=array('input_0' => 'PFSR'  , 'input_1' => 991070, 'input_2' => $account_number );
$fields_string = http_build_query($data);
 
//Initialisation de curl dans $curl
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL, "https://bank.codes/iban/generate/ireland/"); //Page sur laquelle envoyer les POST autrement dit la page vers laquelle pointe le formulaire
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); //On envoie les valeurs
curl_setopt($ch, CURLOPT_FAILONERROR, true); // Required for HTTP error codes to be reported via our call to curl_error($ch)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');

$data = curl_exec($ch); //On place le code de la page

if (curl_errno($ch)) {
    $error_msg = curl_error($ch);
}
curl_close($ch);

if (isset($error_msg)) {
    // TODO - Handle cURL error accordingly
    echo "ERREUR : <br>";
    print_r($error_msg);
    exit();
}
 


 
/* Affichage du code */
 
//ech
echo preg_match($pattern) ;
?>



0
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour votre aide
J'obtiens comme erreur PHP Parse error: syntax error, unexpected '$ch' (T_VARIABLE) on line 30
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753 > ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Tu n'as pas du copier/coller exactement le code que je t'ai donné....
0
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Mon hébergeur vient d'activer curl, je crois que tous marche bien par contre J'ai une erreur au niveau de la regex
Warning: preg_match() expects at least 2 parameters, 1 given on line 50
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753 > ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Oui je n'avais pas regardé cette partie de ton code
https://www.php.net/manual/fr/function.preg-match.php

ça devrait donner un truc du genre
$matches = array();
preg_match('/'.$pattern.'/', $data, $matches,);
print_r($matches);
0
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ça marche, j'ai ajouter $matches = $matches[0] pour afficher uniquement iban sans les éléments du tableau.
$matches = array();
preg_match('/'.$pattern.'/', $data, $matches);
$matches = $matches[0];
print_r($matches);

Merci beaucoup
0