Come posso creare una funzione che mi permetta di trasformare tutte le parole che iniziano con http:// nel relativo collegamento html <a href="http://resto-della-parola">http://resto-della-parola</a> ?
Funziona, però adesso è sorto un'altro problema: per inserire dei collegamenti o cose similo ho creato un sistema di bbcode, però adesso vengono convertiti anche gli url dei bbcode.
Invece di usare i tuoi BBCode personalizzati non sarebbe meglio adottare uno standard di formattazione del testo e usare Markdown? È facile da scrivere e anche quando non è formattato si capisce perfettamente quale sarà il risultato nel testo finale.
Ho utilizzato i bbcode perchè ho bisogno di assegnare ad alcuni elementi classi specifiche del css, ad esempio
Codice:
lo converto in <div class="code">. Sul database memorizzo il bbcode così in caso abbia bisogno di cambiare la classe del codice (o altri elementi) mi basterebbe modificare l'espressione in fase di estrazione dei dati.
Ho dato un'occhiata a quello ma non ho capito se potrei utilizzarlo per far ciò.
Adesso mi sono letto [URL="https://www.mrw.it/php/articoli/espressioni-regolari-funzioni-pcre-e-differenze-funzioni-posix_1262_3.html"]questo[/URL] articolo e sono quasi riuscito a risolvere. Ho provato con questo ma non riesco a capire come mai mi rimangano i simboli di apertura e chiusura del tag:
[PHP]$testo = preg_replace("<a href=\"<a href=\"(.*?)\">(.*?)</a>\">", "<a href=\"$1\">", $testo);[/PHP]
In pratica al posto di diventare <a href="link"> diventa <<a href="link">>
Come mai?
Effettivamente mancavano i delimitatori. Comunque, se vuoi evitare di fare l'escape dello slash di chiusura, puoi usare un altro carattere per delimitare l'espressione. Io solitamente ne uso uno che non compare nell'espressione, per evitare di mettere backslash inutili. Prova ad esempio con la chiocciola.