eregi_replace omzetten naar preg_replace

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joey Felling

Joey Felling

27/10/2015 13:18:44
Quote Anchor link
Beste community,

Ik heb het volgende probleem. Op mijn website kreeg ik een foutmelding in mijn ubb.php bestand. Er staan namelijk nog een aantal regels in eregi_replace en mijn server draait momenteel op php versie 5.3 en dus is dit outdated.

Ik heb geprobeerd dit op te lossen maar ik blijf een foutmelding krijgen, ook heb ik verschillende tutorials geprobeerd om te aan te passen maar dit is mij tot op heden niet gelukt.

Ik hoop dat iemand mij uitleg kan geven over wat ik precies verkeerd doe.

Original code:

$bericht = eregi_replace("(^|[ \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $bericht);

$bericht = eregi_replace("(^|[ \n\r\t])((ftp://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $bericht);

$bericht = eregi_replace("([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=\"mailto:\\1\">\\1</a>", $bericht);

$bericht = eregi_replace("(^|[ \n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $bericht);

$bericht = eregi_replace("(^|[ \n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"ftp://\\2\" target=\"_blank\">\\2</a>", $bericht);

Adapted code:

$bericht = preg_replace("#\(^|[ \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#is","\\$1<a href=\"\\$2\" target=\"_blank\">\\$2</a>", $bericht);

$bericht = preg_replace("#\(^|[ \n\r\t])((ftp://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#is","\\$1<a href=\"\\$2\" target=\"_blank\">\\$2</a>", $bericht);

$bericht = preg_replace("#\([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)#is","<a href=\"mailto:\\$1\">\\$1</a>", $bericht);

$bericht = preg_replace("#\(^|[ \n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#is","\\$1<a href=\"http://\\$2\" target=\"_blank\">\\$2</a>", $bericht);

$bericht = preg_replace("#\(^|[ \n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#is","\\$1<a href=\"ftp://\\$2\" target=\"_blank\">\\$2</a>", $bericht);


Bij voorbaat dank.
 
PHP hulp

PHP hulp

24/11/2024 15:16:03
 
- Ariën  -
Beheerder

- Ariën -

27/10/2015 15:13:41
Quote Anchor link
eregi_replace is verouderd, gebruik preg_replace()
 
Joey Felling

Joey Felling

27/10/2015 19:11:49
Quote Anchor link
Beste Arien,

Zoals ik ook in de titel van dit topic heb aangegeven weet ik inderdaad dat eregi_replace verouderd is en dat hiervoor preg_replace gebruikt moet worden. Echter krijg ik dit niet voor elkaar, en zoals ik hierboven ook aangegeven heb, heb ik dit geprobeerd aan te passen maar ik blijf een 'warning' krijgen. Mijn vraag is dus ook wat ik fout doe en niet hoe ik eregi_replace update.

Toch bedankt voor je reactie.
 
- Ariën  -
Beheerder

- Ariën -

27/10/2015 19:16:21
Quote Anchor link
Welke code gaat er dan fout? En welke foutmelding krijg je?
 
Joni Fleischer
Moderator

Joni Fleischer

27/10/2015 19:32:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$bericht
= preg_replace('#(^|[ \n\r\t])([a-z0-9]{1,6}://([a-z0-9\-]{1,}(\.?)){1,}[a-z]{2,5}(:[0-9]{2,5}){0,1}((\/|~|\#|\?|=|&amp;|&|\+){1}[a-z0-9\-._%]{0,}){0,})#si', '\\1<a href="\\2">\\2</a>', $bericht);

$bericht = preg_replace('#(^|[ \n\r\t])((www\.){1}([a-z0-9\-]{1,}(\.?)){1,}[a-z]{2,5}(:[0-9]{2,5}){0,1}((\/|~|\#|\?|=|&amp;|&|\+){1}[a-z0-9\-._%]{0,}){0,})#si', '\\1<a href="http://\\2">\\2</a>', $bericht);

$bericht = preg_replace('#(^|[ \n\r\t])(([a-z0-9\-_]{1,}(\.?)){1,}@([a-z0-9\-]{1,}(\.?)){1,}[a-z]{2,5})#si', '\\1<a href="mailto:\\2">\\2</a>', $bericht);
?>
Gewijzigd op 27/10/2015 19:32:51 door Joni Fleischer
 
Thomas van den Heuvel

Thomas van den Heuvel

27/10/2015 19:43:26
Quote Anchor link
Euh, ik zou dit toch even testen of je XSS (Cross Site Scripting) kunt uitsluiten. Anders steelt iemand dadelijk je koekjes.

Output escaping (htmlspecialchars() over het resultaat halen) kan daarbij helpen.

En voor een correcte werking van je output escaping is het weer van belang dat... je character encoderingen op orde zijn (hoe kon het ook anders).

Daarbij ben ik eigenlijk een voorstander van "domme" forum functionaliteit. In die zin dat als je ergens een klikbare hyperlink van wilt maken, dat je er maar [url][/url] omheen zet, en geen automatische detectie die alles omzet en in een heleboel randgevallen fout gaat.
Gewijzigd op 27/10/2015 19:44:49 door Thomas van den Heuvel
 
Joey Felling

Joey Felling

27/10/2015 23:07:55
Quote Anchor link
Bedankt voor alle reacties. Tip voor '- Ariën -', lees voortaan even het topic goed door voordat je iemand probeert te helpen. Joni bedankt voor de code, het werkt. Ik begrijp alleen nog steeds niet precies waarom, desalniettemin zeer tevreden. Thomas bedankt voor de tip en ik begrijp je mening over de forum functionaliteit.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.