Avatar billede sansalvador Nybegynder
11. oktober 2003 - 19:54 Der er 23 kommentarer og
1 løsning

Indhold i function indeholder <br>

Hejsa ... Jeg har et udtræk fra PHP, der sætter noget ind i en JS funktion..

Det kan fx se sådan her ud:
onclick="funktion('ting1','ting2','ting3<br />fortsat')"

Når siden køres, ser det hele sådan her ud:
onclick="funktion('ting1','ting2','ting3
fortsat')"

Kan man ikke køre en "steril" afvikling, af sådan en funktion? =)
Avatar billede sukos Juniormester
11. oktober 2003 - 20:05 #1
Du vil ha' det hele på en linie?
onclick="funktion('ting1','ting2','ting3', 'fortsat')"
?????????
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 20:06 #2
Nej...
Jeg vil have det til at se sådan her ud:
onclick="funktion('ting1','ting2','ting3<br />fortsat')"
Avatar billede sukos Juniormester
11. oktober 2003 - 20:11 #3
echo nl2br($dinvar);

evt. Men hvordan henter du di nvar fra PHP?
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 20:13 #4
Har også prøvet med nl2br, men med ligefedt resultat.

Well, sagen, hvorfor hentes der fra PHP, kan da være underordnet...? =)
Avatar billede sukos Juniormester
11. oktober 2003 - 20:15 #5
Næh, fordi det er jo PHP som laver outputtet.
Anyway, prøv:

$dinvar = return ereg_replace("(\r\n|\n\r|\n|\r)", "<br />", $dinvar);
echo $dinvar;
Avatar billede sukos Juniormester
11. oktober 2003 - 20:16 #6
Hov! :O) (bruger det i en funktion!)

$dinvar = ereg_replace("(\r\n|\n\r|\n|\r)", "<br />", $dinvar);
echo $dinvar;
Avatar billede sukos Juniormester
11. oktober 2003 - 20:21 #7
<?php
function br($var) {
return ereg_replace("(\r\n|\n\r|\n|\r)+", "<br />", $var);
}

$str = 'Hov du!
Hvad er nu det?
Virker det????';

echo br($str);
?>

Og forresten så er der forskel på:

onclick="funktion('ting1','ting2','ting3', 'fortsat')"

og

onclick="funktion('ting1','ting2','ting3<br />fortsat')"

Du mener vel at det skal se så'n ud:

onclick="funktion('ting1','ting2','ting3<br />', 'fortsat')"

????????
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 20:23 #8
Jeg har aldrig nogen sinde skrevet:
onclick="funktion('ting1','ting2','ting3<br />', 'fortsat')"

eller

onclick="funktion('ting1','ting2','ting3', 'fortsat')"

...så jeg ved ikke lige, hvor du får den idé fra :)

Men jeg vil lige prøve mig frem, med det du har foreslået :)
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:17 #9
Hmm .. det virker udemærket, lige indtil at der kommer to "\n" ..

Det virker så hvis man indsætter \n\n i replace..

sådan her:
return ereg_replace("(\r\n|\n\r|\n|\r|\n\n)+", "<br />", $var);

Men lidt irriterende er det vel... Nogen løsning?
Avatar billede sukos Juniormester
11. oktober 2003 - 22:22 #10
$dinvar = ereg_replace("(\r\n|\n\r|\n|\r)+", "<br />", $dinvar);

Ja, tænkte du ikke havde mere end en \n så jeg brugte ikke +, som betyder x antal :O)

Og så lige et svar! :O)
Avatar billede sukos Juniormester
11. oktober 2003 - 22:24 #11
Nåh, jeg havde jo svaret!
Når der bruges flere forskellige løsninger, ( \r\n og \n\r og \n og \r ) er det fordi forskellige browsere opfatter/laver dem forskelligt, linieskift i et textarea.
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:26 #12
Ja .. takker ..
Lige en sidste ting, som er lidt irriterende :)

Hele idéen i det, er at smide indholdet af denne her funktion over i nogle tekstboxe .. I det her tilfælde i et textarea ... Er der så en måde - hold fast ;) - at få de her <br /> til at indrette sig efter textboxens "normer" igen, så den viser linieskift istedet for <br />?

Du har egentlig svaret på det du skulle, så du får point :)
Avatar billede sukos Juniormester
11. oktober 2003 - 22:30 #13
Du echo'er bare din var.
Hvis der er et \n i det du echo'er, vil der automatisk blive lavet et linieskift
Avatar billede sukos Juniormester
11. oktober 2003 - 22:31 #14
Og linieskift kan jo kun vises i et textarea!
En tekstbox er jo "straight"
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:33 #15
Ja .. Men jeg mener nu:

document.forms.textareafelt.value=indholdmedbr

Sådan bliver den sat ind fra den forrige funktion ... Og den indeholder jo ikke \n ... men kun <br />.

Nogen forslag?
Avatar billede sukos Juniormester
11. oktober 2003 - 22:37 #16
hmhmhmhm, måske så'n:

$dinvar = ereg_replace("<br />", "\\n", $dinvar);

Men er det ikke nemmere at bruge PHP'en til at vise indholdet?
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:39 #17
Jow, men det er en del af et større projekt, jeg har gang i... Hvornår skal den php ting, så sættes ind?

Det hele foregår jo i "realtime", og PHP bliver ikke kørt efter siden er vist jo.

Dvs det SKAL være op til JS, at få lavet <br /> om til \n ... Hvis overhovedet muligt ...?
Avatar billede sukos Juniormester
11. oktober 2003 - 22:43 #18
Ja, men når du vil vise det igen, kan du jo bruge php:

<?php
function br($var) {
return ereg_replace("(\r\n|\n\r|\n|\r)+", "<br />", $var);
}

$str = 'Hov du!
Hvad er nu det?

Virker det????';

echo br($str);

function back($var) {
return ereg_replace("<br />", "\n", $var);
}
?>
<form>
<textarea cols="20" rows="10"><?php echo br($str); ?></textarea>

<textarea cols="20" rows="10"><?php echo back(br($str)); ?></textarea>
</form>
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:52 #19
Ja, men problemet er, at siden bliver ikke opdateret overhovedet, da al teksten bliver sat ind direkte i textarea vha. Javascript..

eksempel:
<?

$indhold = "mumletekst fra db med masser af \n";

function br($var) {
return ereg_replace("(\r\n|\n\r|\n|\r)+", "<br />", $var);
}

?>

function indsaetitextarea(indhold) {
  document.forms.textareafelt.value=indhold
}

<a href="java script:indsaetitextarea('<?=br($indhold);?>')">hej</a>

<textarea name="textarea">(Her bliver teksten så vist med en masse synlige <br />)</textarea>
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 22:56 #20
og navnet på textareaet skulle så være textareafelt .. mindre detalje
Avatar billede sukos Juniormester
11. oktober 2003 - 23:18 #21
hmm, hvornår vil du så egentlig vise <br />?

<html><head>
<script type="text/javascript">
function indsaet(indhold) {
document.forms.minform.mitfelt.value=indhold;
}
</script>

</head>
<body>
<?php
function br($var) {
return ereg_replace("(\r\n|\n\r|\n|\r)+", "<br />", $var);
}

$str = 'Hov du!
Hvad er nu det?

Virker det????';

echo br($str);

function back($var) {
return ereg_replace("<br />", "\\n", $var);
}
?>
<a href="java script:indsaet('<?php echo back(br($str)); ?>');">Test</a><p>
<form name="minform">
<textarea cols="50" rows="10"><?php echo br($str); ?></textarea>

<textarea cols="50" rows="10" name="mitfelt"></textarea>
</form>

</body></html>
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 23:20 #22
Jeg vil vise det senere et andet sted ...

Men okay .. takker.
Avatar billede sukos Juniormester
11. oktober 2003 - 23:25 #23
nåh, ok.
Hvis du blot har sin streng, kan du jo bruge

function back2($var) {
return ereg_replace("(\r\n|\n\r|\n|\r)+", "\\n", $var);
}
?>
<a href="java script:indsaet('<?php echo back2($str); ?>');">Test</a><p>

for at erstatte alle linieskift med et enkelt
Avatar billede sansalvador Nybegynder
11. oktober 2003 - 23:33 #24
Jeg fandt ud af det på din måde, men ikke den måde du foreslog:

ereg_replace("(\r\n|\n\r|\n|\r)", "\\n", $var);

Igen, tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester