2011-01-04 20 views
2

Ich arbeite an der Behebung ein paar Bugs/Hinzufügen von Funktionen zu einer Website jemand anderes gebaut. Kann mir jemand sagen, was die folgenden Regexes tun? Ich bin mit regulären Ausdrücken vertraut, aber ich habe nicht die geringste Ahnung, was diese zu erreichen versuchen.PHP regulären Ausdruck Hilfe

$qsReplace = preg_replace('/\\\t/', "\t", $qsReplace); 
$qsReplace = preg_replace('/\\\/', '\\\\\\', $qsReplace); 
$qsReplace = preg_replace('/\$([0-9])/','\$````~~~~$1', $qsReplace); 
$queryString = preg_replace('/\$\`\`\`\`\~\~\~\~([0-9])/','\$$1', $queryString); 

Ich vermute, dass derjenige, der dies codiert, ein bisschen seltsam war, aber ich bin mir nicht sicher.

+0

Was ist mit 'mysql_real_escape_string',' str_replace', '(int)' passiert? – RobertPitt

+0

Sie führen tatsächlich mysql_real_escape_string in der Abfragezeichenfolge aus, bevor dieser Block ausgeführt wird. –

Antwort

1

Wandelt \t in und tatsächliche Registerkarte

  • $qsReplace = preg_replace('/\\\t/', "\t", $qsReplace);

Escapes Doppelschrägstriche, kann mit dem addslhases();

ersetzt werden
  • $qsReplace = preg_replace('/\\\/', '\\\\\\', $qsReplace);

Flossen eine $ durch eine Ziffer wie $01 gefolgt und ersetzt mit backtick x4 + ~ x4 (pre)

  • $qsReplace = preg_replace('/\$([0-9])/','\$````~~~~$1', $qsReplace);

Entfernt die $, backtick , ~

  • $queryString = preg_replace('/\$\ `` `\ ~ \ ~ \ ~ \ ~ ([0-9]) /‘, '\ 1 $$', `
  • $ querystring) tat

Offensichtlich ist der letzte Programmierer verstehe ein paar Dinge nicht.

1
  1. Ersetzen eines entkam \ t mit einem Tabulator (\ t)
  2. Escapes Doppel Schrägstriche
  3. Findet ein Dollarzeichen gefolgt von einer Ziffer und fügt vier Backticks und vier Tilden zwischen der Zahl und dem Dollar Schild.
  4. Entfernt diese Backticks und Tilden zwischen einem Dollar und der Zahl.

(3 & 4 dank chx)

2

Der dritte findet man ein Dollarzeichen gefolgt von einer Ziffer und fügt vier Backticks und vier Tilden zwischen der Zahl und dem Dollarzeichen. Der vierte entfernt diese Backticks und Tilden zwischen einem Dollar und der Zahl.

Ich würde etwas mehr Daten jonglieren vermuten, der sich zwischen den beiden und eine Hoffnung, dass keine Eingabe je vier Backticks von vier Tilden gefolgt enthalten würde ...

+0

Seufz ... das sind eigentlich mehr oder weniger Rücken an Rücken.Ich fange an zu denken, dass der Typ, der diese Seite codiert hat, es absichtlich aufgebläht und verschleiert hat, so dass niemand sonst in der Lage wäre, es aufrechtzuerhalten. –