---
title: "Pattern för att göra replace på <br /><br /> till </p><p>"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/133956-pattern-för-att-göra-replace-på-br-br-till-p-p"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "K@llen"
published: "2005-09-08T15:56:43.000Z"
updated: "2005-09-08T17:51:07.000Z"
replies: 4
views: 270
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/133956-pattern-för-att-göra-replace-på-br-br-till-p-p"
---

# Pattern för att göra replace på <br /><br /> till </p><p>

## #1 — K@llen, 2005-09-08T15:56Z

Hej,

Studera följande:

```
    $text = nl2br( $text );    
    $text = str_replace( '<br />', "</p><p>", $text );
```

Det blir sagolikt gräslig källkod av att enbart använda nl2br(). När jag presenterar en commentar omges den hårdkodat av \<p\>\</p\>. Ponera att debattören vill ha nytt stycke. Då slår denna två enterslag. Det blir då:

```
<p>Text, en massa text i stycke ett<br /><br />text, en massa text i stycke2</p>
```

Istället vill man så klart ha det:

```
<p>Text, en massa text i stycke ett</p>
<p>text, en massa text i stycke2</p>
```

Med min replace ovan blir det så klart:

```
<p>Text, en massa text i stycke ett</p>
<p></p>
<p>text, en massa text i stycke2</p>
```

Det hade varit perfekt om man kunde ersätta två eller fler \<br /\> i följd med \</p\>\<p\>. Hur skulle en sådan pattern kunna se ut?

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

## #2 — Jesper T, 2005-09-08T16:09Z

```php
(<br />){2,}
```

...kanske? Escapa även slashen.

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

## #3 — K@llen, 2005-09-08T16:20Z

Tack, men den pattern verkar inte fungera även om jag escapar slashen.

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

## #4 — K@llen, 2005-09-08T16:28Z

Detta verkar vara lösningen på mitt problem.
<http://www.webforum.nu/showthread.php?t=123608>

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

## #5 — K@llen, 2005-09-08T17:51Z

Det blev nog inte riktigt bra ändå. Vi säger att skribenten skriver följande:

> Detta är en fin text. Detta är en fin text. Detta är en fin text.
> 
> \<blockquote\>
> Detta är ett fint citat.
> \</blockquote\>
> 
> Detta är en fin text. Detta är en fin text. Detta är en fin text nummer två.

Då blir källkoden:

```
<p>Detta är en fin text. Detta är en fin text. Detta är en fin text.</p>

<p>
<blockquote>
Detta är ett fint citat.
</blockquote>
</p>

<p>Detta är en fin text. Detta är en fin text. Detta är en fin text nummer två.</p>
```

Det är \<p\>:na runt citatet jag (och validatorn) inte gillar. 
Funktionen jag hänvisade till ovan är:

```
function autop($pee, $br=1) {
	$pee = preg_replace("/(\r\n|\n|\r)/", "\n", $pee); // cross-platform newlines
	$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
	$pee = preg_replace('/\n?(.+?)(\n\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end
	if ($br) $pee = preg_replace('|(?<!</p>)\s*\n|', "<br />\n\n", $pee); // optionally make line breaks
return $pee;
}
```

Visst borde det gå att få till snygg och valid källkod på kommentarerna?

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

---

Tråden på webben: https://www.webforum.nu/amne/php/133956-pattern-för-att-göra-replace-på-br-br-till-p-p
