Eregi_replace en preg_replace

  • Hallo, ik ben sinds pas weer begonnen met scripten na een hele lange tijd en zie dat er teveel veranderingen zijn gekomen. Ik ben weer opnieuw begonnen met een oude maffia source die ik heb te herscripten, maar loop nu al tegen iets aan waar ik niet uit kom.


    Eregi_replace doet het niet meer, dan gaat de site raar staan. Heb hem aangepast naar preg_replace (De site staat nu wel goed), maar ook die doet het in php 7 niet, want dan word de profiel tekst niet weergeven. Dus is ook niet goed. Ben er zolang uit geweest dat ik dit niet weet aan te passen. Weet iemand hoe ik dit moet doen? Het liefste zie ik een voorbeeld, want aan uitleg snap ik nog niks.


    Code
    $user->info = preg_replace( "#\[youtube\]([a-zA-Z0-9].+?)\[/youtube\]#i", '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>' ,$user->info);
    $user->info = preg_replace("\\[color=([^\\[]*)\\]([^\\[]*)\\[/color\\]","<font color=\"\\1\">\\2</font>",$user->info);
    $user->info = preg_replace("\\[email=([^\\[]*)\\]([^\\[]*)\\[/email\\]", "<a href=\"mailto:\\1\">\\2</a>",$user->info);
    $user->info = preg_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$user->info);
    $user->info = preg_replace("\\[img]([^\\[]*)\\[/img\\]","<img src=\"\\1\" name=\"userprofile\">",$user->info);
  • Hoe zag een deel van de code eruit met eregi?


    PS: Als je toch bezig bent: Pak meteen die oude font-tag even aan, en maak een iframe van de YouTube tag. Flash is allang deaud!

    Hetzelfde als nu, alleen in plaats van preg_replace stond er eregi_replace.


    Code
    $user->info = eregi_replace( "#\[youtube\]([a-zA-Z0-9].+?)\[/youtube\]#i", '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>' ,$user->info);
    $user->info = eregi_replace("\\[color=([^\\[]*)\\]([^\\[]*)\\[/color\\]","<font color=\"\\1\">\\2</font>",$user->info);
    $user->info = eregi_replace("\\[email=([^\\[]*)\\]([^\\[]*)\\[/email\\]", "<a href=\"mailto:\\1\">\\2</a>",$user->info);
    $user->info = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$user->info);
    $user->info = eregi_replace("\\[img]([^\\[]*)\\[/img\\]","<img src=\"\\1\" name=\"userprofile\">",$user->info);
  • Als je overschakelt op preg_replace: De reguliere expressie van je YouTube tag zou als het goed is wel moeten werken, zolang je even een iframe gebruikt omdat flash dood is.


    Voor de rest is het een kwestie van een / (de delimiter) voor en na je expressie te plaaten.

  • Ja, dat snap ik. Maar stomme vraag, ik weet niet wat je daarmee bedoeld. Ik ben er zolang uit geweest. Wat bedoel je voor en na je expressie? Op welke plekken moet ik dat zetten dan? Want heb het overal geprobeerd en werkt nog steeds niet, dus zal ik het wel fout hebben neer gezet denk ik.

  • Hoe doe ik dat met iframe dan? Want dat werkt bij mij niet op welke manier ik het ook probeer.


    <iframe width="560" height="315" src="https://www.youtube.com/embed/SmTNOqFoAgg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


    Hoe moet ik ervoor zorgen dat elke gebruiker een filmpje kan toevoegen via iframe.

  • Code
    $user->info = preg_replace("\expressie\",
      '<iframe width="560" height="315" src="https://www.youtube.com/embed/SmTNOqFoAgg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
      $user->info
    );

    Bovenstaand voorbeeld zal in de $user->info string letterlijk het woord expressie gaan vervangen met die exacte iframe beschreven in de code en die gewoon weer in de $user->info (= preg_replace(..)) string opslaan.
    Enige wat nog rest is enkele zaken dynamisch ingevuld krijgen zoals bv. het filmpje zijn URL. Dat kan je overlaten aan de \expressie\ die bv. een youtube URL kan matchen a.h.v. een regex patroon om die dan als variabele vb: \1 te kunnen gebruiken in je replaced content ($replacement, param 2) https://www.php.net/manual/en/function.preg-replace.php


    Voorbeelden van hoe dat replacen werkt vind je in je eigen topic code al weet ik nu niet 100% of die naar behoren werken.
    Wat misschien ook handig kan zijn is https://regexr.com/ https://www.regexlib.com/cheatsheet.htm & https://www.php.net/manual/en/….reference.delimiters.php

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!