Gå til innhold

Garanti's hjelpetråd til PHP


Anbefalte innlegg

Videoannonse
Annonse
Gjest Slettet+6132

$string = nl2br($string);

$string = addslashes($string);

 

Jeg beklager at jeg ikke fulgte helt med, om du bytter om på de to slik jeg har gjort nå skal det virke. Det er ikke \n som blir escapet, kun slashen selv. Det vi egentlig vil er at \n (newline) endres til <br/>, slik at det faktisk blir en ny linje i et HTML-dokument.

Lenke til kommentar

Hei igjen. Jeg vet at man ved å inkludere følgende kode-linje

 

header("Content-Type: text/html;charset=UTF-8");

 

får man følgende tilbake:

 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

Kan man gjøre noe lignende for å f.eks inkludere stylesheets, eller doctype?

Lenke til kommentar
Gjest Slettet+6132

Feil, header() sender kun ut en HTTP-header til browseren, meta-taggen må du legge til selv i HTML-koden din, det samme gjelder doctype og stylesheets.

Lenke til kommentar
  • 3 uker senere...

Holder på med en liten preg_replace-snutt som virker helt umulig, selv om den er ganske simpel. Har holdt på med den i 4-5 dager nå og har vært en utømmelig kilde til frustrasjon og hodepine.

 

Jeg vil at snutten skal ta bort hver bit av <br> som befinner seg inni <pre>-tagen:

$patt = "/(\<pre\>)(\<br\>)(\<\/pre\>)/i";
$subj = "tekst<pre>uyuyliuy<br>oiyoiy</pre>teksttekst'";

$subj = preg_replace("$repl", '$1$3', $subj;);

Endret av Garanti
Lenke til kommentar

Du er inne på noe. Vil det kunne være flere enn en br i midten eller bare en. Hvis det bare er en inne kan man bruke denne:

 

preg_replace('/(<pre>.*)<br>(.*<\/pre>)/i', '$1$2', 'ekst<pre>uyuyliuy<br>oiyoiy</pre>teksttekst');

 

Men hvis det kan være flere br så vil den ikke fungere og da må vi se etter andre løsninger.

Lenke til kommentar

<?php
echo preg_replace_callback(
'#<pre>(.*?)</pre>#s',
create_function(
	'$m',
	'return \'<pre>\' . str_replace(\'<br>\', \'\', $m[1]) . \'</pre>\';'
),
"This is a text<br>with <pre>Preformatted
<br>
text
<br>
Blah
</pre>
-
<pre>
NoBR
</pre>
-
<pre>
Yet<br>An<br>Other
</pre>
Foo<br>Bar"
);
?>

EDIT: Fixa en liten bug

Endret av itsmebth
Lenke til kommentar

Hei.

Bra itsmebth kunne hjelpe deg!

Regnet med at det kunne være flere <br> men var på vei ut i solen i går så det var alt jeg rakk før jeg stakk.

 

Jeg er litt sta og ville komme med mitt eget forslag til hvordan det kunne løses :-)

 

preg_replace('/((?<=\<pre\>).*(?=\<\/pre\>))/iesU', "str_replace('<br>', '', '$1')", $string);

 

Dette er bare en annen måte å gjøre det på. Har ikke peiling hvem av de som vil gi best resultat med ytelse etc.

Lenke til kommentar

Hvis hastighets forskjellene i testen hans er representativt så tror jeg aldri jeg skal bruke e modifern igjen og alltid bruke preg_replace_callback :-) Har aldri benyttet meg av preg_replace_callback tidligere men jeg må innrømme den virker ganske kraftig.

 

Takk for hardigets tipset itsmebth!

 

... hmm må få lagt til preg_replace_callback i regex verktøyet mitt ;-)

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...