Tjena,
Har följande för att parsa länkar som BBCode:
$Str = preg_replace('/\[URL\](.*?)\[\/URL\]/i', '<a href="$1" rel="nofollow" target="_blank">$1</a>', $Str);
Problemet är att om man postar väldigt långa URLer ser det konstigt ut, så jag skulle vilja korta ner "$1" som själva länktiteln. Skulle vilja korta ner det enl. följande:
preg_replace('/(?<=^.{15}).{4,}(?=.{20}$)/', '...', $Str)
Resultatet av ovan blir då t.ex. http://www.google.se/.../bla.html
Men det går inte att använda ovan preg_replace på $1 (såklart!), så, hur gör jag? Tack!
aasahMedlem sedan mars 20034 471 inlägg Vad händer om du ersätter punkterna med char(46) (= .)?
Hej,
Är inte riktigt med... Jag ska förklara lite bättre. När man postar en länk, sparas den i databasen såhär:
[URL="https://www.google.com.ph/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"][ URL ][/URL][url]https://www.google.com.ph/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8[/url][URL="https://www.google.com.ph/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"][ / URL ][/URL]
När jag sedan visar inlägget, ska ovan parsas till:
<a href="https://www.google.com.ph/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8" rel="nofollow">https://www.goog[red][B]...[/B][/red]=2&ie=UTF-8</a>
Skulle alltså vilja göra "allt" med en preg_replace, men måste isf. köra en till replace på $1. Förstår inte hur och var jag ska få in ditt förslag.
Tack
metalboyMedlem sedan jan. 2005953 inlägg Om du använder preg_replace_callback() istället borde du kunna göra det du vill.