Dovrei realizzare un sistema analogo all'inserimento di url di questo forum
potreste darmi qualche suggerimento ???codice://tag personalizzati Elemento 0 -->forum.html.it"
cichity74
Dovrei realizzare un sistema analogo all'inserimento di url di questo forum
potreste darmi qualche suggerimento ???codice://tag personalizzati Elemento 0 -->forum.html.it"
cichity74
Sicuramente c'è di meglio, ma potresti provare così:Originariamente inviato da cichity74
Dovrei realizzare un sistema analogo all'inserimento di url di questo forum
potreste darmi qualche suggerimento ???codice://tag personalizzati Elemento 0 -->forum.html.it"
cichity74
Codice PHP:
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace(']', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
[QUOTE]Originariamente inviato da nyo89
Sicuramente c'è di meglio, ma potresti provare così:
Codice PHP:
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace(']', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
[/PHP] [/QUOTE]
Nella prima riga un " di troppo
[PHP]
Corretta:
$testo = str_replace("[URL=", '<a href="', $testo);
[/PHP]
non funziona....
[PHP]
mi restituisce:
// <a href="http://forum.html.it" target="_blank">forum.html.it[/URL" target="_blank">
[/PHP]
credo sia dovuto dalla quadra “[” (II riga del tuo script)
Altri sviluppi
Cambiando l' ordine dei fattori il prodotto cambia...
unico problema è che se nel testo è presente una quadra “]” viene sostituita con
" target="_blank">
[PHP]
$testo = str_replace("[URL=", '<a href="', $testo);
$testo = str_replace("[/URL]", "</a>", $testo);
$testo = str_replace("]", '" target="_blank">', $testo);
echo $testo;
![]()
cichity74
Si è vero, non ci avevo pensato, però potresti fare così forse:
o anche qui non va?Codice PHP:
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace('[COLOR=red]"[/COLOR]]', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
![]()
con la sequenza da te suggerite:
cosi funziona ma se nel testo è presente una ] la sostituisce con " target="_blank"Codice PHP:
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace('"]', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
risultato:
// [URL=http://forum.html.it]forum.html.it
Codice PHP:
$testo = str_replace("[URL=", '<a href="', $testo);
// purtoppo mi sost il codice è come la tua 3 riga
$testo = str_replace('[/URL]', '</a>', $testo);
$testo = str_replace("]", '" target="_blank">', $testo);
echo $testo;
risultato:
// [url="http://forum.html.it"]forum.html.it[/url]
cichity74
Io ho provato così, e funziona:
inoltre non c'è il problema che se uno inserisce ] viene sosituito, perchè fai sostituire "] ...Codice PHP:
<?php
$testo = '[ URL="http://asdasd.com"]testo_url[ /URL]';//ho aggiunto spazi, perchè altrimenti il forum lo trasforma
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace('"]', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
?>
Variando la sintassi del tag personalizzato funziona perfettamente
rimane una curiosità come funziona sul forum di html.it con la loro
sintassi che prevede una quadra “]”....????
spero che qualche admin / dev del forum ci sveli l'arcano
grazie per i suggerimenti
cichity74
un espressione regolare ti serve...trovi un articolo su html.it e anche se vedi sul manuale on-line di php trovi molte funzioni già fatte che servono a te
Originariamente inviato da nyo89
Sicuramente c'è di meglio, ma potresti provare così:
Codice PHP:
$testo = str_replace('[URL="', '<a href="', $testo);
$testo = str_replace(']', '" target="_blank">', $testo);
$testo = str_replace('[/URL]', '</a>', $testo);
echo $testo;
![]()
usa le pcre![]()
(http://php.net/pcre)
Sostanzialmente puoi fare una espressione regolare del genere:
codice:<?php $str = $_POST['testo']; $str = preg_replace('/^\[URL=([^\]]*?)\]([^\[]*?)\[\/URL\]$/i', "<a href=\"\\1\" target=\"_blank\">\\2</a>", $str); echo $str; ?>
[edit] in ritardo![]()