Gå til innhold

hjelp til syntax - eregi_replace


Anbefalte innlegg

Skrevet

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:

Videoannonse
Annonse
Skrevet

Hvorfor bruke <i> eller CSS når man kan bruke <em>(istedet for <i>) og <strong>(istedet for <b>)? XHTML er det også :)

 

Burde man ikke skrive svaret man kommer frem til når man får hjelp her?

Skrevet

nei har ikke vært inne siden i går. jobber litt ved siden av å ha fritid vettu ;) skal se igjennom tråden i morgen eller lørdag, takk for all hjelp så langt :)

Skrevet
$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*

Skrevet
$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);

  • 4 uker senere...
Skrevet (endret)

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
Skrevet

om du bare vil ha linjeskiftene som opprinnelig kommer fra tekstboksen omgjort til linjeskift igjen når de kommer ut fra db'en bruker jeg bare dette:

$innhold_fra_db=nl2br($innhold_fra_db);

funker fett for meg. :)

Skrevet (endret)

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
Skrevet

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.

Skrevet
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

Skrevet

Dette var det jeg kom fram til slutt:

 

Alt _før_ lagring i db (takk til jorgis for det tipset).

 

$info= preg_replace("/(\015\012)|(\015)|(\012)/"," <br/>", $info);

$info=mysql_escape_string($info);

 

-torms

Skrevet

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.

Skrevet

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

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