2 Stimmen

Hilfe zu regulären Ausdrücken in PHP

Ich arbeite daran, ein paar Fehler zu beheben bzw. Funktionen zu einer Website hinzuzufügen, die jemand anderes erstellt hat. Kann mir jemand sagen, was die folgenden Regexe tun? Ich bin halbwegs vertraut mit regulären Ausdrücken, aber ich habe nicht die nebelhafteste Idee, was diese versuchen zu erreichen.

$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 das codiert hat, ein wenig seltsam war, aber ich bin mir nicht sicher.

0 Stimmen

Was geschah mit mysql_real_escape_string , str_replace , (int) ?

0 Stimmen

Sie laufen tatsächlich mysql_real_escape_string auf die Abfragezeichenfolge, bevor dieser Block ausgeführt wird.

2voto

chx Punkte 10935

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

Ich würde vermuten, dass noch mehr Daten zwischen den beiden jongliert werden und hoffe, dass keine Eingabe jemals vier Backticks gefolgt von vier Tildes enthält...

0 Stimmen

Seufz... diese werden eigentlich mehr oder weniger hintereinander ausgeführt. Ich fange an zu glauben, dass der Kerl, der diese Seite programmiert hat, sie absichtlich aufgebläht und verschleiert hat, damit niemand in der Lage ist, sie zu warten.

1voto

fredley Punkte 30941
  1. Ersetzen Sie eine escapete \t mit einem Reiter ( \t )
  2. Entfernt doppelte Backslashes
  3. Findet ein Dollarzeichen gefolgt von einer Ziffer und fügt vier Backticks und vier Tilden zwischen der Zahl und dem Dollarzeichen ein.
  4. Entfernt diese Backticks und Tilden zwischen einem Dollar und der Zahl.

(3 & 4 Dank an chx)

1voto

RobertPitt Punkte 55763

Konvertiert \t in und aktuelles Register

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

Escapes Doppelte Backslashes, Kann ersetzt werden durch addslhases();

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

Findet eine $ gefolgt von einer Ziffer wie $01 und ersetzt sie durch backtick x4 + ~ x4 (vor)

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

Entfernt die $ , backtick , ~

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

Offensichtlich hat der letzte Programmierer ein paar Dinge nicht verstanden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X