webForumDet fria alternativet

oönskad radbrytning

PHP

7 svar · 225 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Frågan#1

När jag försöker skriva ut meddelande poster i en gästbok så blir det en radbrytning efter varje variabel, vilket inte ser så snyggt ut i webbläsaren. Hur får jag bort den?

echo "
                  <table border=\"0\" cellspacing=\"2\" cellpadding=\"5\" width=\"100%\">\n
                    <tr valign=\"top\">\n
                      <td width=\"30\" VALIGN=\"top\">\n
			<A HREF=\"".$hemsida[$index]."\" TARGET=\"_blank\">\n
			  <IMG SRC=\"images\\homepage.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"Besök ".$namn[$index]."s hemsida\">\n
			</A><BR>\n
			<A HREF=\"mailto:".$epost[$index]."\" TARGET=\"_blank\">\n
			  <IMG SRC=\"images\\mail.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"Skicka mail till ".$namn[$index]."\">\n
			</A><BR>\n
		      </td>\n
                      <td>\n
                        <p><span class=\"text\"><b>".$titel[$index]."</b><br>\n
                          ".$meddelande[$index]." </p>\n
                        <p>/".$namn[$index]."</p></span>\n
                      </td>\n
                    </tr>\n
                    <tr valign=\"top\">\n
                      <td colspan=\"2\">\n
                      </td>\n
                    </tr>\n
		  </table>\n
                  <hr>
";

------------------
Alpha II med rätt att döda

Medlem sedan feb. 20001 050 inlägg
#2

Fattar inte riktigt. Dina <br> blir naturligtvis radbrytningar, men annars skall det ju inte bli några, inte heller efter varje variabel :q

Beskriv mer...

/nicclas - www.nyhetsrubriker.com

Medlem sedan maj 20002 993 inlägg
#3

Det blir en radbrytning i koden vilket ses som ett mellanslag i ns.

ex:
<IMG SRC=\"images\\homepage.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"Besök ".$namn[$index]."s hemsida\">\n

blir:
<IMG SRC="images\homepage.gif" WIDTH="16" HEIGHT="16" BORDER="0" ALT="Besök ".$namn[$index]." <--- radbrytning!
s hemsida">

------------------
Alpha II med rätt att döda

Medlem sedan feb. 20001 050 inlägg
#4

Ahh, nu fattar jag :)

Och det uppträder efter alla variabler säger du. Jo så här: Du lagrar gästboksdata på textfil, eller hur?! Varje variabel har en egen rad i denna textfil, eller hur?! När du läser in en rad från textfilen så kommer även "\n"-tecknet med och lagras i bla $namn. Och det vill du ju inte.

Enklast brukar vara att ta bort "\n"-tecken från alla variablerna med:
$namn[$index]=str_replace("\n","",$namn[$index]);
osv, för alla variablerna.

/nicclas - www.nyhetsrubriker.com

[Redigerat av nicclas den 17 feb 2001]

Medlem sedan maj 20002 993 inlägg
#5

Jag trodde redan att jag hade gjort det! :)

------------------
Alpha II med rätt att döda

Medlem sedan maj 20002 993 inlägg
#6
while(!feof($fpread)){
$data1=fgets($fpread,200);
$data2=fgets($fpread,200);
$data3=fgets($fpread,200);
$data4=fgets($fpread,200);
$data5=fgets($fpread,2020);
$tom=fgets($fpread,1024);
$tom=fgets($fpread,1024);
if($mess>=$start && $mess<$start+$persida){
$namn[$index]=str_replace("\n","",$data1);
$epost[$index]=str_replace("\n","",$data2);
$hemsida[$index]=str_replace("\n","",$data3);
$titel[$index]=str_replace("\n","",$data4);
$meddelande[$index]=str_replace("\n","",$data5);
$index=$index+1;
}
$mess++;
}

funkar fortfarande inte... :(

------------------
Alpha II med rätt att döda

Medlem sedan jan. 20001 006 inlägg
#7

Prova att använda chop() (eller rtrim()) istället för str_replace, de två förstnämnda funktionera gör exakt det du vill göra d.v.s. tar bort "whitespace" från slutet av en sträng.

Till whitespace räknas bl.a. carriage return (\r) och line feed (\n).
http://www.php.net/manual/en/function.chop.php
http://www.php.net/manual/en/function.rtrim.php

/j

------------------
R6

Medlem sedan feb. 20001 050 inlägg
#8

Yepp, Batboys förslag är bra. Problemet är att "ny rad" tydligen blir lite olika på olika system. Om du byter till

$namn[$index]=str_replace("\r\n","",$data1);
$epost[$index]=str_replace("\r\n","",$data2);
$hemsida[$index]=str_replace("\r\n","",$data3);
$titel[$index]=str_replace("\r\n","",$data4);
$meddelande[$index]=str_replace("\r\n","",$data5);

så blir det bra. Men som sagt chop() är ju snyggare :)

/nicclas - www.nyhetsrubriker.com

[Redigerat av nicclas den 18 feb 2001]

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)