---
title: "BBCode/korta länkar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/2399230-bbcode-korta-länkar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "MickeA.com"
published: "2016-03-14T08:36:41.000Z"
updated: "2016-03-15T13:09:05.000Z"
replies: 3
views: 233
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/2399230-bbcode-korta-länkar"
---

# BBCode/korta länkar

## #1 — MickeA.com, 2016-03-14T08:36Z

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!

Permalänk: https://www.webforum.nu/p/2399230

## #2 — aasah, 2016-03-14T20:43Z

Vad händer om du ersätter punkterna med char(46) (= .)?

Permalänk: https://www.webforum.nu/p/2399232

## #3 — MickeA.com, 2016-03-15T04:56Z

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

Permalänk: https://www.webforum.nu/p/2399236

## #4 — metalboy, 2016-03-15T13:09Z

Om du använder [preg_replace_callback](http://www.php.net/preg_replace_callback)() istället borde du kunna göra det du vill.

Permalänk: https://www.webforum.nu/p/2399237

---

Tråden på webben: https://www.webforum.nu/amne/php/2399230-bbcode-korta-länkar
