Visualizzazione dei risultati da 1 a 5 su 5

Discussione: RegExp nome funzione

  1. #1

    RegExp nome funzione

    Ciao a tutti,
    mi sfugge perchč questa regexp fallisce in alcuni casi

    esempio:

    REGEXP (deve restituire il nome della funzione)
    [^function ]+[\w_\-]{1,}[^\(]
    Stringhe parsate

    Codice PHP:
    function VerificaPasswordAdm($pass)
    function 
    DEBUG($array,$title="",$export=false)
    function 
    PathALL($what="",$print=false,$local=false,$RESELLERNAME="",$PACKAGENAME=""
    STAMPA:

    VerificaPasswordAdm
    DEBUG($array,$title=
    PathALL
    cosč che non digerisce bene????
    Luca Bottoni's World
    www.bottonisworld.com

  2. #2
    Non e' che non digerisce bene, e' che il pattern non fa quello che pensi e funziona per puro caso

    codice:
    [^function ]
    NON significa escludere la stringa function. Le parentesi quadre identificano gruppi di caratteri, per cui quel pezzo significa "cerca un carattere che NON sia una f, una u, una n, una c, una t, una i, una o, una n o uno spazio".

    Guarda cosa succede: ti ho colorato i pezzi del pattern e le porzioni di ogni stringa che ognuno di quei pezzi matcha:
    codice:
    [^function ]+[\w_\-]{1,}[^\(]
    codice:
    function VerificaPasswordAdm($pass)
    function DEBUG($array,$title="",$export=false)
    function PathALL($what="",$print=false,$local=false,$RESELLERNAME="",$PACKAGENAME="")
    Suggerirei questo semplice pattern:
    codice:
    function (.*?)\(
    sempre che l'input sia sempre nello stesso formato di quelle righe di esempio.

  3. #3
    grazie per la risposta, anche la tua ha un difetto, ti mostro le risposte


    function VerificaPasswordAdm(
    function DEBUG(
    function PathALL(

    devo dirti che la mia l'ho costruita seguendo un how to in internet. Mi viene una domanda, se viene ricercata ogni lettera della parola function nelle parentesi [] perchč rileva anche il $ ?
    Luca Bottoni's World
    www.bottonisworld.com

  4. #4
    Originariamente inviato da lbottoni
    grazie per la risposta, anche la tua ha un difetto, ti mostro le risposte
    Non ha un difetto, ha un capturing group che devi usare.

    codice:
    preg_match('#function (.*?)\(#', $string, $match);
    print_r($match);
    il nome della funzione e' in $match[1]

    Originariamente inviato da lbottoni
    devo dirti che la mia l'ho costruita seguendo un how to in internet. Mi viene una domanda, se viene ricercata ogni lettera della parola function nelle parentesi [] perchč rileva anche il $ ?
    No viene ricercata ogni lettera che NON fa parte della parola function. Per quello nel secondo caso trova tranquillamente la parentesi e il $.

  5. #5
    si hai ragione, ho fatto un ragionamento errato...si funziona

    Grazie mille KB
    Luca Bottoni's World
    www.bottonisworld.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.