Gå til innhold

Problem med linjeskift i preg_replace()


Anbefalte innlegg

Jeg ønsker å erstatte HTML-utsnittet under, med General:

 

<th>General</th>
</tr>
<tr>

 

Det er uaktuelt å bruke strip_tags(), da det også vil fjerne resten av HTML-koden. Jeg ønsker derfor å benytte preg_replace().

 

Jeg har prøvd følgende, men får det ikke til å fungere:

 

preg_replace("/<th>General<\/th>\n\r<\/tr>)/", "General", $html)

 

Jeg har også prøvd forskjellige versjoner med paranteser rundt \n\r, kun \n, kun \r etc. men får det ikke til å fungere. Noen som kan hjelpe?

 

 

EDIT: Dårlig emnetittel...

Endret av simenss
Lenke til kommentar
Videoannonse
Annonse
eller:

 

preg_replace("/<th>General<\/th>\r\n<\/tr>\r\n<tr>/", $text);

 

carriage return kommer før newline.

8460498[/snapback]

 

Gitt at du bruker windows-plattformen. Andre steder er linjeskift bare en enkel newline (\n), og regexen vil feile. Enkleste og beste er å bruke modifiers for å tillate linjeskift, evt. bruke en .

Lenke til kommentar
Utestet

PHP

<?php

 

preg_replace("/<th>General</th></tr><tr>/im", $text);

 

?>

 

Ved å bruke m modifieren så vil den matche sjølv om teksten er på flere linjer

8459883[/snapback]

Takk for svar. Har prøvd følgende kode:

 

<?php
$text = '<table>
<tr>
<th>General</th>
</tr>
<tr>
</table>';

print(preg_replace("/<th>General<\/th><\/tr><tr>/im", NULL, $text));
?>

 

Den returnerer likevel hele HTML-koden. Om jeg fjerner <\/tr><tr> fra det regulære uttrykket, fjerner den <th>General</th>. Dette holder dessverre ikke for meg, så linjeskiftene er fortsatt et problem.

Endret av simenss
Lenke til kommentar

Fikk det til med:

 

<?php
$text = '<table>
<tr>
<th>General</th>
</tr>
<tr>
</table>';

print(preg_replace("/<th>General<\/th>.<\/tr>.<tr>/s", NULL, $text));
?>

 

S modifieren gjør at jeg kan plassere punktum (.) der hvor det er linjeskift. En mer "delikat" løsning hadde likevel vært om den ignorerte linjeskiftene slik Shadows0 prøvde å forklare.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...