Avatar billede lakana Nybegynder
06. juli 2008 - 21:05 Der er 9 kommentarer og
1 løsning

preg_replace - ret hver linje, der indeholder tekst

Hvordan retter jeg hver selvstændige linje, der indeholder tekst til at være et afsnit (<p>), men samtidig indeholde undtagelser (hvis linjen starter med <h1>/<h2>/..?

$string = "<h2>Overskrift</h2>
En tekst.

En ny linje.

Endnu en ny linje."

Nu skal $string så ende ud med at se således ud: "<h2>Overskrift</h2><p>En tekst.</p><p>En ny linje.</p><p>Endnu en ny linje.</p>
Avatar billede lakana Nybegynder
06. juli 2008 - 22:35 #1
Jeg har prøvet således:

$text = preg_replace("/^(?!<h[1-6]>)(.+)$/mi", "<p>$1</p>", $text);

Men den overser ikke tomme linjer :(
Avatar billede cronaldo Nybegynder
06. juli 2008 - 23:05 #2
nl2br(nl2br($str))

prøv lige det?
Avatar billede cronaldo Nybegynder
06. juli 2008 - 23:06 #3
Og nu er den så copy/paste venlig ;D ..

nl2br(nl2br($string))
Avatar billede lakana Nybegynder
06. juli 2008 - 23:13 #4
Hvad skulle det hjælpe?
Avatar billede lakana Nybegynder
06. juli 2008 - 23:15 #5
Man kunne gøre som jeg gør nedenfor, men jeg vil hellere kunne gøre det ordentligt i en preg_replace().

$text = str_replace( "\r", "", $text );
$text = preg_replace("/^(?!<h[1-6]>)(.+)$/mi", "<p>$1</p>", $text);
Avatar billede cronaldo Nybegynder
06. juli 2008 - 23:34 #6
det hjælper at den laver 2 x br .. det giver i mit hoved det samme som en <p> bortset fra du ikke kan smide style="" på ? :)
Avatar billede lakana Nybegynder
07. juli 2008 - 00:06 #7
ellers tak. det giver da overhovedet ikke en <p> ;-)
Avatar billede mbw Nybegynder
07. juli 2008 - 08:32 #8
$parts = explode("\r\n",$text);
$output = "";
for($i=0; $i<count($parts); $i++){
    if(!empty($parts[$i])){
        $output .= preg_replace("/^(?!<h[1-6]>)(.+)$/mi", "<p>$1</p>", $parts[$i]);
    }
}
Så burde den tage højde for tome linjer.
Avatar billede lakana Nybegynder
09. juli 2008 - 18:20 #9
Men som sagt, så kan jeg godt finde ud af, at gøre hvad jeg ønsker, men ikke i en enkel preg_replace()-funktion :(
Avatar billede lakana Nybegynder
07. august 2011 - 20:37 #10
ellers tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester