Convertir Script Python en php

Résolu
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

2 réponses

  1. Modérateur
    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
    1. 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
  2. Modérateur
    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
    1. Merci pour votre aide
      J'obtiens comme erreur PHP Parse error: syntax error, unexpected '$ch' (T_VARIABLE) on line 30
      0
    2. Modérateur
      @ananias8686Tu n'as pas du copier/coller exactement le code que je t'ai donné....
      0
    3. @jordane45Mon 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
    4. @jordane45Ç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