Ik probeer met een preg_replace() een stuk tekst te laten vervangen.

[edit=gebruikersnaam||timestamp]

moet worden

<span class="edit">[Het bericht is gewijzigd door gebruikersnaam op date(\'d/m/Y - H:i:s\', "timestamp")]</span>

De timestamp zou dus ook meteen moeten worden omgezet in formaat d/m/Y - H:i:s als dat mogelijk is.

Ik ben zelf een kneus met regexp en alles wat erop lijkt. Als het kan moet het wel een preg_replace blijven en geen ereg/eregi ofzo worden, maar als het niet anders kan is dat natuurlijk ook goed :)

Ik heb zelf ook al wat zitten proberen, maar verder dan dit kom ik niet:

<?php
$text = preg_replace("/\[edit=(.+?)||([0-9]+)\]/ie", '<span class="edit">[Het bericht is gewijzigd door \\1 op date(\'d/m/Y - H:i:s\', "\\2")]</span>', $text);
?>

(Niet lachen, ik moest ook wat proberen he :P)

En voor het gemak zou de scheiding || ook mogen worden vervangen voor iets anders, was willekeurig :)
Ik heb ondertussen wat aanpassingen gedaan en ik heb nu een heel raar probleem. Het patroon wat gezocht wordt is nu [edit=timestamp]gebruikersnaam[/edit] als het goed is. Het werkt iig wel deels. Maar het probleem is dat dit werkt:

<?
$text = preg_replace("/\[edit=([0-9]+)\](.+?)\[\/edit\]/ie", 'Hoi', $text);
?>

Maar dit niet:

<?
$text = preg_replace("/\[edit=([0-9]+)\](.+?)\[\/edit\]/ie", 'Het bericht is gewijzigd', $text);
?>

En dus ook niet als ik er de <span> enzo nog bij wil zetten.

Reageren