Visualizzazione risultati 1 fino 14 di 14

Discussione: [PHP] Errore nel preg_match!

  1. #1
    Guest

    Unhappy [PHP] Errore nel preg_match!

    Ciao a tutti, sto facendo un link encoder (o crypt) e ho un problema! Nel andare a trovare l'md5 corrispondente al link in un file ([link] | [md5]) questo mi restituisce un errore:
    Warning: preg_match() expects parameter 2 to be string, array given in index.php on line 12
    Ora, questo è il codice:
    Codice PHP:
    if($_GET["link"]) {
    #index.php?link=8f5820e41c833d42061b5a8c512dd408
    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);

    print_r($file);
    echo
    "<hr />"; # divisore per print_r()...
    echo preg_match("(.+) | {$link}",$file);

    exit();
    }
    Questo invece è il file con print_r: (ho messo gli a capi, era tutto in una linea!!)
    Codice:
    Array (
    [0] => ilbello.com | 41df0a971c60a8a423816d5f57c46f40
    [1] => altervista.org | abdbf7c3400d809b78ce86497e66dd68
    [2] => netsons.org | bcfd3d4ed2986bbd10be1136f601564b
    [3] => digilander.libero.it | 35d2b65150b2840b1d6703b4c4f76e34
    [4] => http://ciao.com | 5ade7829d29e5589fa442dc989da0d8e
    [5] => http://davide.ilbello.com | 8f5820e41c833d42061b5a8c512dd408
    )
    Ho messo dei siti di esempio! Come potete vedere ogni sito corrisponde ad un md5 e io devo trovarlo tramite esso...cioè se io scrivo 35d2b65150b2840b1d6703b4c4f76e34 lui mi deve trovare digilander.libero.it..solo che non mi funziona..dove sbaglio? Grazie mille, ciao Davide!!
    Ultima modifica di sIM : 16-07-2009 alle ore 14.29.21

  2. #2
    Guest

    Predefinito

    Il secondo parametro non può essere un array, ma una stringa.


    ciao!

  3. #3
    Guest

    Predefinito

    Non ho capito u.u... Stai parlando del preg_match?
    E come dovrei fare? xD

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Non ho capito u.u... Stai parlando del preg_match?
    Come hai intitolato il topic?
    Sì, parlo di quella funzione.
    Potresti suddividere ulteriormente l'array generato, separando la stringa in chiaro dalla rispettiva codifica e creare un array associativo.
    In verità non ti serve nemmeno preg_match!


    Ciao!

  5. #5
    Guest

    Predefinito

    Facendo così (codice sotto) non mi mostra nemmeno il contenuto dell'array!
    Codice PHP:
    $name = "db.txt"; # nome del file di testo...
    $file = file($name);

    $ex = explode("|",$file);
    print_r($ex);


    #echo "<hr />"; # divisore per print_r()...
    #echo preg_match("(.+) | {$link}",$file);

    exit();
    Grazie!!

  6. #6
    Guest

    Predefinito

    Ma conosci la differenza tra stringa ed array?
    Ci sono funzioni che accettano entrambi i tipi ed altre funzioni che vogliono l'una o l'altra.
    explode e preg_match sono due di queste.


    ciaoo!

  7. #7
    Guest

    Predefinito

    Si,
    stringa = $var = "contenuto";
    array = array(0 => "ciao", 3 => "3", "5");
    Noh?? Comunque, non ho capito che devo fare! Mi fai un esempio..mi sto impallando! u.u
    Ultima modifica di sIM : 16-07-2009 alle ore 15.08.48

  8. #8
    Guest

    Predefinito

    Se $file è un array che contiene le righe del txt, tu per ogni riga (foreach) devi suddividere la stringa risultante:
    Codice PHP:
    foreach($file as $riga){
    list(
    $chiara,$criptata)=explode('|',$riga);
    $Array[$chiara]=$criptata; // o il contrario, a seconda delle esigenze
    }
    Poi stampa $Array


    Ciao!!!

  9. #9
    Guest

    Predefinito

    Ok, ma ora come controllo se l'hash md5 esiste? Non mi funziona! Mi manda al primo sito che è nella prima riga del file! =(
    Codice PHP:
    <?php
    if($_GET["link"]) {

    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);

    foreach(
    $file as $nome) {
    list(
    $url,$md5) = explode("|",$nome);
    $array[$md5] = $url; $redirect = $array[$md5];
    if(
    $array[$md5]) {
    echo
    "<script>location.replace(\"{$redirect}\");</script>";
    }
    else {
    echo
    "<script>alert(\"This url was not found.\nQuesto indirizzo non esiste.\");</script>";
    echo
    "<script>location.replace(\"http://www.davide.ilbello.com/script/link-crypt/\");</script>";
    }
    }

    exit();
    }
    ?>
    Grazie mille!!

  10. #10
    Guest

    Predefinito

    Non ti serve il foreach per il controllo, ti basta fare isset $Array[$hash] e automaticamente ti controlla se quel md5 esiste, e poi agisci di conseguenza.


    Ciao!

  11. #11
    Guest

    Predefinito

    ...non funziona! =(
    Codice PHP:
    if($_GET["link"]) {

    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);

    list(
    $url,$md5) = explode("|",$file);
    $array[$md5] = $url;

    if(isset(
    $array[$md5])) {
    echo
    "<script>location.replace(\"{$array[$md5]}\");</script>";
    } else {
    echo
    "<script type=\"text/javascript\">alert(\"This url was not found.\nQuesto indirizzo non esiste.\");</script>";
    #echo "<script type=\"text/javascript\">location.replace(\"http://www.davide.ilbello.com/script/link-crypt/\");</script>";
    }

    exit();
    }
    Grazie mille!!

  12. #12
    Guest

    Predefinito

    Codice PHP:
    if($_GET["link"]) {

    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);
    $array = array();

    foreach(
    $file as $riga) {
    list(
    $url,$md5) = explode("|",$file);
    $array[$md5] = $url;
    }

    if(isset(
    $array[$md5])) {
    echo
    "<script>location.replace(\"{$array[$md5]}\");</script>";
    } else {
    echo
    "<script type=\"text/javascript\">alert(\"This url was not found.\nQuesto indirizzo non esiste.\");</script>";
    #echo "<script type=\"text/javascript\">location.replace(\"http://www.davide.ilbello.com/script/link-crypt/\");</script>";
    }

    exit();
    }

  13. #13
    Guest

    Predefinito

    Qualsiasi link scrivo mi ritorna l'errore 404 (il js...)
    Codice PHP:
    if($_GET["link"]) {

    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php","",$link);
    $link = str_replace("?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);
    $array = array();

    foreach(
    $file as $riga) {
    list(
    $url,$md5) = explode("|",$riga);
    $array[$md5] = $url;
    }

    if(isset(
    $array[$md5]) && $array[$md5] == $link) {
    echo
    "<script type=\"text/javascript\">location.replace(\"{$array[$md5]}\");</script>";
    } else {
    echo
    "<script type=\"text/javascript\">alert(\"This url was not found.\\nQuesto indirizzo non esiste.\");</script>";
    echo
    "<script type=\"text/javascript\">location.replace(\"index.php\");</script>";
    }

    exit();
    }
    Ciauuu!! Grazie!!
    Ultima modifica di sIM : 17-07-2009 alle ore 16.58.52

  14. #14
    Guest

    Predefinito

    Prova così:
    Codice PHP:
    if($_GET["link"]) {

    $link = trim(addslashes($_GET["link"]));
    $link = str_replace("index.php","",$link);
    $link = str_replace("?link=","",$link);

    $name = "db.txt"; # nome del file di testo...
    $file = file($name);
    $array = array();

    foreach(
    $file as $riga) {
    list(
    $url,$md5) = explode("|",$riga);
    $array[$md5] = $url;
    }

    if(isset(
    $array[md5($link)]) && $array[md5($link)] == $link) {
    echo
    "<script type=\"text/javascript\">location.replace(\"{$array[$md5]}\");</script>";
    } else {
    echo
    "<script type=\"text/javascript\">alert(\"This url was not found.\\nQuesto indirizzo non esiste.\");</script>";
    echo
    "<script type=\"text/javascript\">location.replace(\"index.php\");</script>";
    }

    exit();
    }

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •