Gå til innhold

hjelp til syntax - eregi_replace


Anbefalte innlegg

Tror at det kan bli løst slik.. dersom det søkes etter ett enkelt ord, setter du variablen $hl = ' søkeord ';

Derved søkes det etter ett ord med mellomrom på begge sider, dersom en finner ett ord med [søkeord] blir det ignorert fordi det ikke matcher søkeordet.

 

 

 

Men ... trådstarter har ikke vært innom på en stund så han har kanskje funnet ut av det... :dontgetit:

Lenke til kommentar
Videoannonse
Annonse
$input = preg_replace("#\[b\](.+?)\[/b\]#", "<b>\\1</b>", $input);

 

:)

Så langt jeg har forsøkt, takler ikke denne linjeskift... har lest litt på regular-expressions.com, og forstått at en dot er et linjeskift? *forvirret*

Det er noen forskjeller fra den jeg bruker... so.. vet som sagt ikke stort om dette..men her er den jeg bruker..

 

$input = preg_replace("#\[b](.*?)\[\/b\]#is", "<strong>$1</strong>", $input);

Lenke til kommentar
  • 4 uker senere...

Gjør det noe om jeg fortsetter på denne?

 

Jeg har en tekstboks for input.

Innholdet blir lagret i db.

Når jeg hente ut strengen vil jeg ha linjeskiftene slik den ble skrevet inn.

Dvs gjøre om \r\n til <br>

Har lest litt i manualen og sett noen eksempel der.

Får det bare ikke til å fungere.

Dette er det jeg har forsøkt:

 

//Henter ut data fra arrayet:
$z1=$brow[info];
//Skal etter sigende erstatte \r\n eller \r eller \n:
$z1 = preg_replace("/(\r\n|\n|\r)/", "<br>", $z1);
//En annen variant:
$z1 = preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$z1); 

 

Edit: Har det noe å si at jeg har valgt datatypen BLOB (vet ikke hva det er engang..) i mysql ?

 

-torms

Endret av torms
Lenke til kommentar

Det gjør det ikke til meg:

 

Et utdrag fra utskriften:

udd i\r\nalle klasser.\r\nPå

 

En annen linje:

irant (alle)\r\nVelkommen

 

Edit: Her er det jeg får ut før kjøring av metoder:

Dette er tekstboksen min. Jeg teste og jeg tester her er et linjeskift:\r\nOg her er et til:\r\nHva med et tredje?\r\nSlenger på det fjerde med det samme jeg er i gang!

 

Her er etter nl2br:

Dette er tekstboksen min. Jeg teste og jeg tester her er et linjeskift:\r\nOg her er et til:\r\nHva med et tredje?\r\nSlenger på det fjerde med det samme jeg er i gang!

 

Altså det samme!

 

Edit2:

Oppdaget noe merkelig. Hva er det jeg har gjort?

Når jeg skriver ut innholdet i tekstboksen _før_ jeg lagrer i db:

Info: Linjeskift:\\r\\nEnda ett:\\r\\nDet tredje:\\r\\nFjerde:

 

Skitt..jeg kjører denne funksjonen på strengen før den lagres i db:

function fix($s)

{

$s=rtrim(ltrim(strip_tags($s)));

return mysql_escape_string($s);

}

Kan det lage problem for meg?

 

-torms

Endret av torms
Lenke til kommentar

Det beste vil være å kjøre nl2br() på strengen _FØR_ den kommer til databasen, siden den slipper å kjøres hver gang siden lastes, samt at du ikke får trøbbel med mysql_escape_string(), som ødelegger totalt for nl2br(). Legg inn følgende linje i fix()-funksjonen din (i steden for den som er der fra før):

 

 $s=rtrim(ltrim(nl2br(strip_tags($s)))); 

 

Hvis du da kjører fix() før du dytter dataene inn i databasen, vil det funke fint.

Lenke til kommentar
Det beste vil være å kjøre nl2br() på strengen _FØR_ den kommer til databasen, siden den slipper å kjøres hver gang siden lastes, samt at du ikke får trøbbel med mysql_escape_string(), som ødelegger totalt for nl2br(). Legg inn følgende linje i fix()-funksjonen din (i steden for den som er der fra før):

 

 $s=rtrim(ltrim(nl2br(strip_tags($s)))); 

 

Hvis du da kjører fix() før du dytter dataene inn i databasen, vil det funke fint.

Linjeskiftene fungerer med det du sier men får fortsatt med \r\n i utskriften.

Ett skritt nærmere..

 

-torms

Lenke til kommentar

her er hva manualen sier om nl2br:

Returns string with '<br />' inserted before all newlines.

 

mao, den fjerner ikke \r\n, den setter bare inn <br/> før \r\n.

 

jeg vil fraråde å formatere tekst før den settes inn i databasen. da har du låst teksten til å være html formatert, og gjøre den tungvindt å bruke i andre sammenhenger, mail, logfil, sqldump, shell, phpmyadmin, etc...

 

teksten bør lagres så generell som mulig og formateres for visning like før den skal vises. nl2br() koster et minimum av ressurser å kjøre på et par strenger.

Lenke til kommentar

jeg vil fraråde å formatere tekst før den settes inn i databasen. da har du låst teksten til å være html formatert, og gjøre den tungvindt å bruke i andre sammenhenger, mail, logfil, sqldump, shell, phpmyadmin, etc...

 

Sikkert riktig det Torbjørn og lover å følge rådet ditt ved senere anledning :innocent:

 

Men dette tilfelle skal det kun vises på skjerm :D

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