login  Naam:   Wachtwoord: 
Registreer je!
 Forum

code probleem

Offline W0etah - 03/12/2006 20:22 (laatste wijziging 03/12/2006 21:08)
Avatar van W0etahPHP beginner Ik probeer nu een ubb te maken voor een php script, maar dit wilt echt niet lukken, ziet iemand wat ik fout doe?

  1. $bericht = preg_replace("/\[php\](.+?)\[\/php\]/is", highlight_string('\\1', true), $bericht);
  2. $output = $bericht;


edit:
  1. $bericht = preg_replace("/\[php\](.*)\[\/php\]/se", "@highlight_string('\\1', 1)", $bericht);


maar nu geeft hij dit weer:

  1. <?php
  2. echo "test\";
  3. ?>


terwijl die \ daar helemaal niet mag staan

2 antwoorden

Gesponsorde links
Offline Thomas - 04/12/2006 11:54 (laatste wijziging 04/12/2006 11:55)
Avatar van Thomas Moderator Voordat je je patroon wilt laten evalueren moet je ge-escapete dubbele quotes strippen uit je match.

Zoiets dus:
  1. <?php
  2. $bericht = preg_replace("/\[php\](.*)\[\/php\]/se", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
  3. ?>


Als ik jou was zou ik een aparte functie maken voor het str_replace(...)-gedeelte, dat maakt e.e.a. overzichtelijker.

Als je wilt heb ik een werkend voorbeeld (wat ook op deze site gebruikt wordt - het forum heb ik gemaakt).

EDIT: Ik zou ook de U-switch (dus /seU) toevoegen om de match un-greedy te maken. Het zou nl. best kunnen zijn dat je bericht meerdere PHP-blokken bevat. Deze zouden in jouw variant verkeerd gematched worden.
Offline W0etah - 04/12/2006 17:33
Avatar van W0etah PHP beginner neej, dat blijft hetzelfde, ik zal ff heel mijn functie posten

  1. <?php
  2. function vieuwFile($path, $user, $file) {
  3. if(!file_exists($path.'/'.$user.'/'.$file)) {
  4. $bericht = "Het bestand $file bestaat niet";
  5. } else {
  6. $fileOpen = fopen($path.'/'.$user.'/'.$file, 'r');
  7. $bericht = fread($fileOpen, filesize($path.'/'.$user.'/'.$file));
  8. $bercht = htmlspecialchars($bericht);
  9. $bericht = preg_replace("/\[php\](.*)\[\/php\]/seU", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
  10. $output = $bericht;
  11. fclose($fileOpen);
  12. }
  13. return $output;
  14. }
  15. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.215s