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?