Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [php] Spiegazione di una funzione con regexp

    Avrei bisogno di una conferma.

    Codice PHP:
    function _contextlinks_process($in_text) {
      return 
    preg_replace_callback('/
                                     \[\?                   # opening bracket
                                     ([a-zA-Z0-9_-]*)       # $1 -- class name
                                     :                      # class, url delimiter
                                     (\^|`)?                # $2 -- optional bypass of link target
                                     ([^\s\]]+)             # $3 -- url
                                     \s+                    # url, text delimiter
                                     ((?:\\\\.|[^\]\\\\])+) # $4 -- text: escaped chars, not right bracket or backslash
                                     \]                     # closing bracket
                                    /x'
    '_contextlinks_callback'$in_text);
    // function _contextlinks_process 
    Se ho capito bene questa funzione restituisce il risultato di una ricerca e sostituzione (preg_replace_callback) di un contenuto con un pattern regexp.

    In questo caso il pattern è contenuto in una funzione chiamata _contextlinks_callback($in_matches) che contiene una serie di istruzioni.

    Fin qui è corretto?
    Credo (e spero di sì).

    Il dubbio mi arriva alla stringa

    Codice PHP:
    $the_text preg_replace('/\\\\(.)/''$1'$in_matches[4]); 
    che se non erro esegue il rimpiazzo nel testo del pattern con il valore specificato.

    Quello che mi crea confusione è l'uso di \\\\ ?
    E' un qualsiasi testo scelto o ha qualche importanza particolare? Noto che nel pattern è presente ((?:\\\\.|[^\]\\\\])+) (quindi anche \\\\) ma mi sfugge il significato di 4 \ dato che un \ è un carattere di escape e lì a rigor logico significherebbe fare un 2 escape di due \.

    Mi sa che mi sono perso qualcosa...

    PS. (.), oltre ad avere significati "alternativi", in php significa che . non è da considerare nel replace?

  2. #2
    O caspita, in 3 pagina in meno di 8 ore?
    Do un piccolo up.

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.