Păcăleală de 1 aprilie, pentru PHPişti

April 1, 2008 – 12:55 am

Deschizându-mi RSS reader-ul ajung pe slashdot.org unde găsesc link-uri spre mai multe pagini cu idei de păcăleli. Distrându-mă de ce vedeam pe acolo, am ajuns la pagina asta şi pe loc mi-a încolţit o idee asemănătoare. Aşa că m-am pus pe treaba, farsa având ca ţintă un client pe care-l cunosc bine şi ştiu că nu se supără (sau cel puţin aşa sper).

Pe scurt, vreau să inversez toate link-urile de pe un „site”, având acces la codul sursă, bineînteles. Adică un link se transformă în knil nu. Restul textului de pe site rămâne neschimbat iar URL-urile funcţionează în continuare. Am pus site între ghilimele deoarece nu e vorba de un site cu mii de useri online ci e vorba de un backend la care au acces 5-6 persoane.

Soluţia tehnică se bazează pe funcţionalitatea de output buffering pe care o oferă PHP-ul. Funcţia de mai jos este un callback pentru ob_start();

function link_reverse($buffer){   if (preg_match_all("|<a.*>(.*)</a>|U", $buffer, $regs, PREG_PATTERN_ORDER)){     for ($i = 0; $i < count($regs[1]); $i++){       $text = $regs[1][$i];       if (!eregi("^[a-z0-9\.\ \-]*$", $text)){         //nu avem doar un simplu text in interiorul ancorei, ignoram         continue;       }       $reverse = "";       for($j = strlen($text) - 1; $j >= 0; $j--){         $reverse .= $text[$j];       }       $buffer = str_replace(">" . $text . "<", ">" . $reverse . "<", $buffer);     }   }   return $buffer; }

Aveţi grijă mâine. Noapte bună!

  1. 3 Responses to “Păcăleală de 1 aprilie, pentru PHPişti”

  2. Nu cred că e backend-ul la care am şi eu acces, nu? Că nu am văzut nici un link invers…

    By Syl on Apr 1, 2008

  3. Nu, nu e. Poate la anu! :P

    By Mihai Brehar on Apr 1, 2008

  1. 1 Trackback(s)

  2. Jan 6, 2009: Diacritice cu virgulă și sedilă, sau cum să împaci capra și varza | Mihai Brehar

Post a Comment