2013-07-19 16 views
10

Ho un file php che non riesco a leggere perché tutte le variabili/funzioni hanno nomi strani! Un blocco di funzione del mio file è:Strange variable/method/class names - PHP

public static function    …………  …… …  ($   ………  …  ……  , $   …… ………  ……  ) 
{ 
    $   …… ……   ……   = strpos(   …………… … ……  ::   ……… ……… …   ($   ………  …  ……  ) , $   …… ………  ……  ); 

    return (false !== $   …… ……   ……  ) ? (int)floor($   …… ……   ……  /4) : false; 
} 

Come so norme php non consentono di utilizzare i punti e gli spazi nel nome varaible.

Io stesso sono venuto con se c'è qualcosa relativo a character encoding! come ho trovato, la codifica dei file è windows-1252.

possono queste puntini e spazi essere convertiti in qualcosa di leggibile?

Anche perché sono variabili/funzioni, hanno più di un'occorrenza nel file.

A cura # 1

apro file, come sempre con Notepad ++/Sublime Text sotto Widnows OS e non è pagato o qualcosa del genere.

A cura # 2

script funziona senza problemi!

A cura # 3

Collega al file: https://www.dropbox.com/s/hoegvk0vz53cnyn/include.php

+3

Da dove hai preso questo file? La licenza che hai ottenuto ti permette effettivamente di modificarlo? Chiaramente chiunque l'abbia fornito ha avuto qualche problema a offuscarsi. Certamente * puoi * sostituire la spazzatura con caratteri più leggibili, ma non con nomi di variabili utili a meno che tu non capisca cosa sta facendo il codice. – geoffspear

+0

Cosa succede quando usi UTF8? I punti rimangono così come sono? I miei pensieri sarebbero che non è possibile. Da dove proviene questo campione? Potresti chiedere all'autore di inviarti una nuova copia? –

+0

Da dove hai preso questo file? Sembra che qualcosa sia stato in qualche modo deliberatamente offuscato – bmurauer

risposta

6

Sembra che il tuo "spazi" e "punti" non sono quello che sembrano. Nel codice che hai postato nella tua domanda, questi sono in effetti "spazi non frantumati" (c2 a0) ed "ellissi" (e2 80 a6). Questi sono caratteri perfettamente validi in un identificatore.

(grazie StackOverflow per essere al 100% UTF-8 compatibile).

[modifica]

... ma dopo aver guardato il file si è collegato, la codifica del file è piuttosto di Windows-1252 (aka. CP1252). La risposta è ancora corretta, ma i corrispondenti valori binari differiscono un po 'da quelli che ho menzionato sopra.

+0

... e I * supponiamo * che la codifica effettiva del tuo file sia UTF-8. – RandomSeed

+0

quindi la storia è che sono dei personaggi validi! – revo

+1

@revo Sì, ma il tuo file è effettivamente codificato in Windows-1252, come hai scoperto. – RandomSeed

3

Qui è tutto convertito in qualcosa di leggermente più leggibile.

public static function ………… …… … ($a , $b) 
{ 
    $c = strpos(some_class::some_function($a), $b); 
    return (false !== $c) ? (int)floor($c/4) : false; 
} 

Senza vedere l'altra funzione a cui fa riferimento o il messaggio di errore che fornisce sarebbe difficile capire perché ha fallito.

Questo codice è stato deliberatamente offuscare per un motivo però. Forse per fermare le persone a trafficare o forse perché è concesso in licenza. Se non funziona forse dovresti provare a contattare l'autore.

+0

Nice clean up +1 – defaultNINJA