Thomas. Skrevet 7. januar 2008 Skrevet 7. januar 2008 Hva bruker dette ? Finnes det andre muligheter enn <br> ? Når man skriver noe html, eller <br> kommer det jo ikke ny linje men når jeg trykker enter kommer det likevell en ny linje. Hvordan går det ann ?
Intramin Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) nl2br()? Endret 7. januar 2008 av Intramin
Wackamole Skrevet 7. januar 2008 Skrevet 7. januar 2008 Jeg er ikke helt sikker på hva du mener... Du sier at hvis du skriver <br /> så kommer det ny linje, men du vil ha det slik at man bare trenger og trykke enter slik som forumet her?.. Dette forumet bruker en "Editor" (Husker ikke helt hva det eksakte navnet er) som skriver koden for brukeren. Det finnes en ganske enkel editor, som heter Tiny MCE editor (google for it). ./Fredrik
Thomas. Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 Hvordan sette du inn den i denne linjen da: ? $linje = str_replace("\r\n", "<br>", $linje);
Wackamole Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) nl2br($linje); Finnes en forklaring om hvordan man bruker dette på php.net (Se linken til Intramin) Endret 7. januar 2008 av Famen
Thomas. Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 Famen: Kan du skrive det inn i strengen, for meg ? Får det ikke til...
grimjoey Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) når du skriver ett innlegg her skjer det minst 3 ting: htmlspecialchars();, strip_tags(); eller htmlentities() Fjerner alle tags eller viser de som htmlentities for å hindre at brukeren kan legge inn markup. Alle bbcodes transformeres til aktuelle tags. (preg_replace()) Og newlines transformeres til <br /> tags. (nl2br()) edit: funksjonen nl2br() tar en string og returnerer en string uten linjeskift men med <br /> i stedet. $_POST['tekst'] = nl2br($_POST['tekst']); Endret 7. januar 2008 av grimjoey
Thomas. Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 Kan du forklare meg litt nærmere, grimjoey ?
grimjoey Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) $string = 'dette er en string med linjeskift'; echo $string: returnerer: dette er en string med linjeskift i html blir det dette er en string med linjeskift $string = nl2br('dette er en string med linjeskift'); eller $string = nl2br($string); (som er det samme etter at vi tidligere har satt $string) returnerer: dette er en string <br>med linjeskift eller: dette er en string <br />med linjeskift i html blir det: dette er en string med linjeskift Endret 7. januar 2008 av grimjoey
Crowly Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) Hver gang du trykker enter så blir det satt inn en linjeskift verdi/tegn. Det varrierer litt fra program til program hva som benyttes, noen bruker kun line feed (lf - \n - ascii verdi 10), andre carriage return (cr - \r - acsii verdi 13) og noen begge deler. Disse "symbolene" er normalt ikke synlig i vanlige editorer/tekstbehandlere, men kan gjerne sees i hex editorer o.l nl2br leter etter linjeskift verdiene og erstatter dem med <br />. Kan ikke så fryktelig mye om dette, så hvis noe er galt så vennligst korriger Endret 7. januar 2008 av Crowly
itsmebth Skrevet 7. januar 2008 Skrevet 7. januar 2008 nl2br fjerner ikke linjeskift, den legger til <br /> foran. nl2br("I'm a\nstring!") = "I'm a<br /> string!"
Thomas. Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 Har fått til greia nå! Se selv: http://support-u.110mb.com/?side=gb Men jeg trenger litt hjel enda, med en funksjon slik at - man må skrive minst 3 bokstaver på et felt. Denne koden har jeg skrevet: if( $navn < 3 ) { echo("Navnet må være lenger enn 3 tegn!"); } Men den funker ikke. Hva er feil ?
grimjoey Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) eller sjekk om $navn{3} eksisterer ({3} henter ut den 4. bokstaven i en streng.) if ($navn{3}) navn_er_lenger_en_3_bokstaver(); crowly: windows bruker CRLF, unix/linux bruker LF og mac bruker CR CR = carriage return LF = line feed CRLF = carriage return + line feed disse er standard ascii tegn akkurat som bokstaver, tall og andre tegn, men de vises ikke som noe annet en linjeskift (så sant ikke du har en hex editor eller en tekst editor med symboler for de) edit: sånn sett er faktisk en tekst fil i windows 1 byte større per linje en tilsvarende fil laget i mac eller linux (nå skal det også sies at det finnes tekst editorer som har sin egen mening om hva som er rett og bruker for eksempel kun LF i windows) btw: CR og LF stammer fra skrivemaskiner. carriage return er når skrivehodet returnerer til venstre. line feed er når papiret blir rullet en linje. Endret 7. januar 2008 av grimjoey
Thomas. Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 Skjønte ikke akkurat det der, grimjoey... Men unasett jeg har tenkt å få trøkka inn denne koden: if( $navn < 3 ) { echo("Navnet må være lenger enn 3 tegn!"); } I denne koden: <?php if (isset($_POST['e'])) { if($_POST['navn'] == $_POST[''] ) { echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>"); } else { if($_POST['meld'] == $_POST[''] ) { echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe hilsen!</h3></div>"); } else { $navn = $_POST['navn']; $melding = $_POST['meld']; $dato = date("F j, Y"); $tid = date("G.i.s"); $d = date("D"); $melding = htmlentities($melding); $navn = htmlentities($navn); $tekst="Inlegget er skrevet av <b>{$navn}</b>, Klokka: <b>{$tid} - {$dato}</b><br> <u>Tekst:</u><br>".nl2br($melding)."<br><hr><br>"; $file = fopen('inc/gb.txt', 'a+', 1); fwrite($file, $tekst); fclose($file); { echo "<div style='background-color:#000000;'><b><font color=green><h3>Din hilsen er lagt til! <a href='#bunn'><div class='ass'>trykk her for å se din hilsenen..</div></a></h3></font></b></div>"; } } } } ?> Der det står: if($_POST['navn'] == $_POST[''] ) { echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>"); } Helt øverst... Kan noen hjelpe meg ? Fordi, det går ikke når jeg prøver - jeg kommer ikke fram til meldingen "Din hilsen er lagt til!" :S
grimjoey Skrevet 7. januar 2008 Skrevet 7. januar 2008 (endret) Du bør indentere koden din ... <?php if (isset($_POST['e'])) { if($_POST['navn'] == $_POST[''] ) { echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>"); } else { if($_POST['meld'] == $_POST[''] ) { echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe hilsen!</h3></div>"); } else { $navn = $_POST['navn']; $melding = $_POST['meld']; $dato = date("F j, Y"); $tid = date("G.i.s"); $d = date("D"); $melding = htmlentities($melding); $navn = htmlentities($navn); $tekst="Inlegget er skrevet av <b>{$navn}</b>, Klokka: <b>{$tid} - {$dato}</b><br> <u>Tekst:</u><br>".nl2br($melding)."<br><hr><br>"; $file = fopen('inc/gb.txt', 'a+', 1); fwrite($file, $tekst); fclose($file); { // denne gjør ingenting echo "<div style='background-color:#000000;'><b><font color=green><h3>Din hilsen er lagt til! <a href='#bunn'><div class='ass'>trykk her for å se din hilsenen..</div></a></h3></font></b></div>"; } // denne gjør ingenting } } } ?> litt lettere å se hva som skjer. if($_POST['meld'] == $_POST[''] ) { ... } og if($_POST['navn'] == $_POST[''] ) { ... } bør være: if ( !isset( $_POST['meld'] ) || empty( $_POST['meld'] ) { ... } og if ( !isset( $_POST['navn'] ) || empty( $_POST['navn'] ) { ... } eller som jeg bruker: // sjekker om post og get variabel er satt og ikke tom. // check_var( 'variabelnavn' ); for $_POST // check_var( 'variabelnavn', 1 ); for $_GET function check_var( $var, $type = 0 ) { if ( $type === 0 ) $type =& $_POST; else $type =& $_GET; if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE; else return FALSE; } if ( !check_var( 'navn', ) ) { ... } if ( !check_var( 'meld', ) ) { ... } slik kan du skrive koden din: <?php function check_var( $var, $type = 0 ) { if ( $type === 0 ) $type =& $_POST; else $type =& $_GET; if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE; else return FALSE; } if ( check_var( 'e' ) ) { if ( check_var( 'navn' ) ) { if ( check_var( 'meld' ) ) { // navn og melding er tilstede if ( strlen($_POST['navn']) > 3 ) { // navn er lenger en 3 tegn. } else { // navn er kortere eller lik 3 tegn. } } else { // meld er tom eller ikke tilstede } } else { // navn er tom eller ikke tilstede } } ?> alternativt (gjør det samme men annen metodikk): <?php function check_var( $var, $type = 0 ) { if ( $type === 0 ) $type =& $_POST; else $type =& $_GET; if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE; else return FALSE; } if ( check_var( 'e' ) ) { if ( !check_var( 'navn' ) ) { // navn er tom eller eksisterer ikke. } elseif ( !check_var( 'meld' ) ) { // melding er tom eller eksisterer ikke. } elseif ( strlen($_POST['navn']) <= 3 ) { // navn er kortere eller lik 3 tegn. } else { // navn og melding eksisterer og er ikke tomme. navn er lenger en 3 tegn. } } ?> nå vil den kun finne den første feilen og gjøre det du vil den skal gjøre der. du kan endre elseif til kun if. da vil du ha muligheten til å skrive ut alle feilene til brukeren. (du vil i så tilfelle kunne få en notice error dersom $_POST['navn'] eksisterer men er mellom 1 og 3 tegn. man skal helst ikke forsøke å lese fra variabler man ikke vet er satt. man bør sjekke med isset() først dersom man ikke vet) Endret 7. januar 2008 av grimjoey
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå