Výsledky 1 až 6 z 6

Téma: [PHP] preg_replace + volání fce na replacementy

  1. #1

    Standardní [PHP] preg_replace + volání fce na replacementy

    Potřeboval bych nakopnout... potřebuju v regulárním výrazu zavolat funkci na nahrazovací řetězec, asi to není moc srozumitelný, tak dám příklad:
    Kód:
    $co=preg_replace("/\[download=(.*),(.*)\]/","<a href=\"/download/\\1\">\\2</a>(".filesize("download/\\1).")",$co);
    Tohle by mělo udělat že to vyrobí odkazy a za ně velikost souboru. ALE místo toho to zavolá funkci filesize s parametrem "download/\1", což samozřejmě nefunguje...
    Ještě příklad jak by to mělo správně pracovat:
    [download=pes.exe, Stáhni psa] => <a href="download/pes.exe">Stáhni psa</a> (369MB)

    Děkuji za radu

  2. #2

    Standardní Re: [PHP] preg_replace + volání fce na replacementy

    Naposledy upravil ripper; 17.06.2007 v 16:56. Důvod: link :)
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  3. #3
    Member Avatar uživatele l_iNu$
    Založen
    22.10.2006
    Bydliště
    Šalingrad (Brno)
    Příspěvky
    125
    Vliv
    231

    Standardní Re: [PHP] preg_replace + volání fce na replacementy

    By se to dalo treba jeste zapsat tak ze za ten regulerni vyraz das modifikator e a pak do retezce co se ma nahradit muzes pouzit libovolny php kod...

    PHP kód:
    preg_replace("/\[download=(.*),(.*)\]/e",'$co = "<a href="/download/\\1">\\2</a>(".filesize("download/\\1").")"',$co); 

  4. #4

    Standardní Re: [PHP] preg_replace + volání fce na replacementy

    Tak jsem si nastudoval preg_replace_callback a je to ok, díky za nakopnutí K+

  5. #5

    Standardní Re: [PHP] preg_replace + volání fce na replacementy

    Citace Původně odeslal l_iNu$ Zobrazit příspěvek
    By se to dalo treba jeste zapsat tak ze za ten regulerni vyraz das modifikator e a pak do retezce co se ma nahradit muzes pouzit libovolny php kod...

    PHP kód:
    preg_replace("/\[download=(.*),(.*)\]/e",'$co = "<a href="/download/\\1">\\2</a>(".filesize("download/\\1").")"',$co); 
    /e switch se nedoporucuje pouzivat z bezpecnostnich duvodu ...



    a navic co tak koukam do diskuze na php.net
    Note that it is in most cases much more efficient to use preg_replace_callback(), with a named function or an anonymous function created with create_function(), instead of the /e modifier. When preg_replace() is called with the /e modifier, the interpreter must parse the replacement string into PHP code once for every replacement made, while preg_replace_callback() uses a function that only needs to be parsed once.
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  6. #6
    Member Avatar uživatele l_iNu$
    Založen
    22.10.2006
    Bydliště
    Šalingrad (Brno)
    Příspěvky
    125
    Vliv
    231

    Standardní Re: [PHP] preg_replace + volání fce na replacementy

    Citace Původně odeslal Fox!MURDER Zobrazit příspěvek
    /e switch se nedoporucuje pouzivat z bezpecnostnich duvodu ...
    Aha dik za info. Naštěstí jsem tohle zatím moc nepotřeboval .

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. Vyznam dual core
    Založil tomase v sekci fóra Intel procesory
    Odpovědí: 958
    Poslední příspěvek: 31.12.2006, 18:34
  2. Podvod na uzivatele jmenem FUP
    Založil trodas v sekci fóra Sítě
    Odpovědí: 114
    Poslední příspěvek: 04.11.2006, 08:08
  3. Digitalni zrcadlovka
    Založil Commander v sekci fóra Nákupní poradna
    Odpovědí: 87
    Poslední příspěvek: 26.03.2006, 13:19
  4. Je to dlouhy, ale precteni stoji za to...
    Založil Ogre v sekci fóra Reklamace a §
    Odpovědí: 2
    Poslední příspěvek: 23.01.2004, 23:52

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •