ik krijg sinds kort een error: Deprecated: Function eregi_replace() is deprecated in /home/zeewaterforum.biz/public_html/prof/classes/ubb.php on line 112
dit is de regel 112

$this->output = eregi_replace("\[url\][[:space:]]*(http://)?([^\\[]*)[[:space:]]*\[/url\]";, "<a href=\"http://\\2\" onclick=\"target='_blank';\">http://\\2</a>", $this->output);

en dit een stukje omringend script

$this->output = preg_replace('!\[u\](.*?)\[/u\]!', "<u>\\1</u>", $this->output);
$this->output = preg_replace('!\[b\](.*?)\[/b\]!', "<strong>\\1</strong>", $this->output);
$this->output = preg_replace('!\[i\](.*?)\[/i\]!', "<i>\\1</i>", $this->output);
$this->output = preg_replace('!\[s\](.*?)\[/s\]!', "<s>\\1</s>", $this->output);
$this->output = preg_replace('!\[sup\](.*?)\[/sup\]!', "<sup>\\1</sup>", $this->output);
$this->output = preg_replace('!\[sub\](.*?)\[/sub\]!', "<sub>\\1</sub>", $this->output);
$this->output = preg_replace('!\[small\](.*?)\[/small\]!', "<small>\\1</small>", $this->output);
$this->output = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "<span class='color: \\1'>\\2</span>", $this->output);
$this->output = eregi_replace("\[url\][[:space:]]*(http://)?([^\\[]*)[[:space:]]*\[/url\]";, "<a href=\"http://\\2\" onclick=\"target='_blank';\">http://\\2</a>", $this->output);
//$this->output = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" onclick=\"target='_blank';\">\\2</a>",$this->output);
$this->output = preg_replace("/\[url\=(.*?)\](.*?)\[\/url\]/is","<a href=\"$1\" onclick=\"target='_blank';\">$2</a>", $this->output);

$this->output = preg_replace("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" onclick=\"target='_blank';\">\\2://\\3</a>", $this->output);
$this->output = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4/\"; onclick=\"target='_blank';\">www.\\2.\\3\\4</a>", $this->output);
$this->output = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $this->output);
$this->output = str_replace("[hr]", "<hr style=\"width: 75%\" />", $this->output);
$this->output = str_replace("[line]", "<hr style=\"width: 75%\" />", $this->output);

if($sStatus != 1) $this->output = preg_replace("/\[img](.+?)\[\/img\]/ie", "\$this->image('\\1')", $this->output);


mijn php kennis is gering en heb normaal iemand die dit voor mij doet ( nu dus even niet ) maar als iemand mij een duwtje in de goede richting kan geven of een tip die naar het oplossen leid dan hoor ik dat graag! alvast bedankt

Toevoeging op 26/01/2014 02:34:51:

de rest van de txt zie ik niet staan vandaar dit extra bericht : ik heb gekeken op internet en daar leek het te komen door de php update. ik heb normaal een vriend die mij hier mee helpt aangezien ik nog niet erg veel php kennis heb vergaard. helaas is het voor hem nu even niet mogelijk vandaar deze shout out naar jullie kennis ! alvast bedankt voor de moeite ! mvg rick
Dat wil zeggen dat je een verouderde php functie gebruikt die bij een volgende php update zal verdwijnen.

Gebruik net als een paar regels eerder preg_replace()
$this->output = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" onclick=\"target='_blank';\">\\2</a>",$this->output);

resulteert in: Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in /home/zeewaterforum.biz/public_html/prof/classes/ubb.php on line 113
lijkt me sterk dat een regel met daarin de functien eregi_replace() een foutmelding over preg_replace() geeft.

De melding is wel duidelijk: een pattern staat tussen niet-alfanumerieke tekens, zoals ~, #, @ en dergelijke

preg_replace('#abc[a-z]+\d$#', '$0', $string);

Je kunt ook een slash als delimiter gebruiken, maar zeker in combinatie met html- of ubbtags waarin al / staat, en ook nog een letterlijk bedoelde [ ] die ook nog met een \ escapet worden, wordt het met een slash als delimiter al snel een oerwoud aan slashes
(immers, de / in je string zou dan ook weer escapet moeten worden)
Rick steenhuis op 28/01/2014 12:03:58

$this->output = eregi_replace("\\*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" onclick=\"target='_blank';\">\\2</a>",$this->output); resulteert in: Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in /home/zeewaterforum.biz/public_html/prof/classes/ubb.php on line 113
eregi_replace resulteert niet in preg_replace warning.... Maar voor het omzetten van eregi_replace naar preg_replace kijk dan eens naar deze 2 regels in je eigen code

/$this->output = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" onclick=\"target='_blank';\">\\2</a>",$this->output);

$this->output = preg_replace("/\[url\=(.*?)\](.*?)\[\/url\]/is","<a href=\"$1\" onclick=\"target='_blank';\">$2</a>", $this->output);
Hier heb je eregi al omgezet naar preg en zie je dat het niet klakkeloos kan kopiƫren, maar het wel verschild. Zie [url=http://nl1.php.net/preg_replace]Documentatie
.

Een tip: Begin met een single quote (') om te voorkomen dat je de dubbel quotes (") moet gaan escapen (\") dit maakt het een stuk leesbaarder.

<?php

$this->output = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" onclick=\"target='_blank';\">\\2</a>",$this->output);

// [url=http://phphulp.nl/]php hulp[/url]
$this->output = preg_replace("#\[url=([^\]]*)]([^\]]+)\[/url])#i",
        '<a href="$1" onclick="target=_blank">$2</a>',
            $this->output);
?>


Toevoeging op 28/01/2014 12:16:12:

#....#i expressie case-Insensitive

\[url= letterlijk een [ gevolgd door url=
([^\]]*) 0 of meer keer een karakter uit de groep tussen []: ^\] (niet een ], die weer escapet wordt)
] letterlijk een ] (immers is onmogelijk een afsluiting van een eerder geopende [ ]

etc
ik ben weer even opnieuw begonnen. mischien even handig te weten dat ik niet zo'n php kenner ben maar wegens omstandigheden ben ik even op mezelf aangewezen. regel 113 was er bij betrokken omdat ik de testregel eronder had gezet

dit is de oorspronkelijke regel 112

$this->output = eregi_replace("\[url\][[:space:]]*(http://)?([^\\[]*)[[:space:]]*\[/url\]";, "<a href=\"http://\\2\" onclick=\"target='_blank';\">http://\\2</a>", $this->output);

ik had de hoop dat deze zou werken maar dat was iets te makelijk
$this->output = preg_replace("\[url\][[:space:]]*(http://)?([^\\[]*)[[:space:]]*\[/url\]";, "<a href=\"http://\\2\" onclick=\"target='_blank';\">http://\\2</a>", $this->output);

resulteert in: Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in /home/zeewaterforum.biz/public_html/prof/classes/ubb.php on line 112
zit ik zo een beetje in de goede richting ? sorry voor mijn ongeschoolde onwetendheid.

$this->output = preg_replace("#\[url\][[:space:]]*)](https?://)?([^] ]+)\[/url])#i",
'<a href="$1" onclick="target=_blank">$2</a>',
$this->output);
ik geef de voorkeur aan \s boven [:space:]

ik weet niet eens zeker of preg [:space:] wel kent.

Verder heb je nu dus nodig


<a href="$1$2" onclick="target=_blank">$1$2</a>


want $1 is het eerst ding tussen ( ), dus het protocol en $2 het tweede, dus "www.xyz.nl"
sorry ik weet dat t niet de bedoeling is maar kunt u voor mij een regel maken die klopt ? want ik heb twijfels over mijn eigen kunsten mvg rick

Reageren