• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Cum sa extragi numele unei variabile in PHP?

4
  • Publicat de Andrei Avădănei
  • în Fără categorie
  • — 18 iul., 2010 at 11:19 am

Exista momente cand vom avea nevoie de numele variabilei ca si string. Evident, acest lucru poate fi facut simplu in mod static, precizand numele efectiv. Dar ce se intampla in cazurile in care acest lucru trebuie sa proceseze variabile dinamice, ale caror nume nu sunt controlate decat de un sistem automat, el generandu-le, el distruagandu-le, el folosindu-le.

Care sunt defapt problemele?

Una dintre probleme e faptul ca PHP ofera initializarea variabilelor dintr-un string, dar nu si reversul. Spre exemplu, codul de mai jos este valid.

$x = 'varn';
$varn = 'Hello World!';
echo $$x; // afiseaza "Hello world"

Solutia?

Avand in vedere ca e o problema destul de importanta, ciudat este faptul ca internetul nu prezinta o rezolvare a acesteia, sau e foarte greu de gasit. Totusi, cineva a abordat problema intr-un mod ingenios, care va fi prezentat mai jos. Acesta s-a folosit de o functie destul de cunoscuta ce extrage toate variabilele definite dintr-un spatiu de lucru – get_defined_vars().

Apoi a fost generat un vector cu toate valorile variabilelor existente (practic s-a copiat tot continutul obiectului returnat de get_defined_vars), urmand „stricarea” valorii variabilei cautate. Din acest moment, evident, vectorul cu valori va fi alterat (toate informatiile trasnsferandu-se prin referinta). u urmeaza decat sa caute pozitia in vector unde valoarea noua nu corespunde cu cea veche si restaurarea valorii initiale.

 
< ?php
 
function var_name (&$iVar, &$aDefinedVars)
{
    foreach ($aDefinedVars as $k=>$v) //construim blocul identic returnat de get_defined_vars()
        $aDefinedVars_0[$k] = $v;
 
    $iVarSave = $iVar;  //salvam valoarea originala a variabilei cautate
    $iVar     =!$iVar; //alteram valoarea originala
 
    $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars)); //cautam diferente
    $iVar      = $iVarSave; //restauram valoarea originala
 
    return $aDiffKeys[0]; //returnam numele(cheia) variabilei cautate
 }
 
?>
 

Cum folosim?

  $nume_var = "worldit";
  echo var_name($nume_var, get_defined_vars()); //va afisa "nume_var"

Daca aveti intrebari nu ezitati sa le puneti aici, sau pe forum.

Etichete: despre phpextrage numele variabilenumele unei variabilePHPTehnictutorial in php

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Eset.ro este tinta unui atac sau doar o victima nevinovata?
  • Articolul următor Fotografii istorice prin intermediul Google

4 Comentarii

  1. iosif spune:
    iulie 18, 2010 la 1:45 pm

    Nici nu stii de cate ori am vrut sa fac chestia asta, dar niciodata n-am stiut. Thx andrei!

  2. Andrei Avadanei spune:
    iulie 18, 2010 la 2:00 pm

    De curiozitate, ce ai incercat sa faci? Intreb asta, pentru ca eu recent m-am izbit de problema si era un aspect extrem de important, care daca nu-l depaseam, imi crea o problema grava de dinamica. 🙂

  3. iosif spune:
    iulie 18, 2010 la 3:58 pm

    Nu mai tin minte, ultima oara cand am avut nevoie sa fac asta a fost acum un an, cred. Stiu ca lucram la o prostioara acasa si voiam sa aflu numele unei variabile.

  4. reeze spune:
    noiembrie 5, 2010 la 4:37 am

    The solution below won’t work like this:
    $a = 10;
    $b = &$a;

    echo var_name($b, get_defined_vars()); // a instead of b.

    here is my solution.
    http://reeze.cn/2010/10/30/php-internal-how-to-get-variables-name-an-extension-implement/


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • iunie 2022
    L Ma Mi J V S D
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Cum sa extragi numele unei variabile in PHP?
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons