You are not logged in.

wcf.regNote.message

Sasser

Beginner

  • "Sasser" started this thread

Posts: 8

  • Send private message

1

Sunday, April 10th 2005, 10:12am

Habe Probs mit Zeilenumbruch

<?
if ($user='read Thread');
echo "Hallo!!";
?>


Hi Leute, erstmal fettes Lob an euch, ich habe in diesem Board schon oftmals hilfen bekommen (über Suche). Super Team !!
Nun habe ich mich dazu durchgerungen mich auch anzumelden :D

Und habe gleich eine Frage...
Also ich bin noch ziemlicher anfänger was PHP angeht^^ aber habe schon ein paar scripte auf die beine gestellt.

Neulich habe ich ein GB mit Smilies gescriptet, und da habe ich meine Probleme...

am anfang war mein problem das die Textarea keine Zeilenumbruch machte.

Nun, das Problem mit dem Zeilenumbruch habe ich in griff bekommen!...
Mit folgendem Code:

PHP Source code

1
$form1=wordwrap($form176"<br>"1); // 1); 




Aber nun is ein weiteres Problem!!!....

Wie kann ich verhindern, das meine Smiles (also die <img src="....">) im Text NICHT umbricht???
Meine smilies haben alle 25 Zeichen, die übertragen werden (halt der teil <img src="...."> ist 25 zeichen)

PHP Source code

1
2
3
4
5
6
7
8
$form1 str_replace(":)"," <img src='smilies/1.gif'>"$form1);
$form1 str_replace(":D"," <img src='smilies/2.gif'>"$form1);
$form1 str_replace(":o"," <img src='smilies/3.gif'> "$form1);
$form1 str_replace(":P"," <img src='smilies/4.gif'> "$form1);
$form1 str_replace(";)"," <img src='smilies/5.gif'> "$form1);
$form1 str_replace(":("," <img src='smilies/6.gif'> "$form1);
$form1 str_replace("lol"," <img src='smilies/7.gif'> "$form1);
$form1 str_replace(":|"," <img src='smilies/8.gif'> "$form1); 




Wie kann Dieses--> $form1=wordwrap($form1, 76, "<br>", 1); // 1); das --> <img src='smilies/8.gif'> erkennen und NICHT umbrechen???

Habe hinter Smilie 1 nun ein <br> gesetzt, aber der gewünschte erfolg bleibt aus :(

PHP Source code

1
$form1 str_replace(":)"," <img src='smilies/1.gif'><br>"$form1); 


Bin echt am verzeifeln ;(


DEMO


Ich danke euch im Vorraus

This post has been edited 2 times, last edit by "Sasser" (Apr 10th 2005, 10:14am)


Prometheus

Administrator

Posts: 3,278

  • Send private message

2

Sunday, April 10th 2005, 10:21am

mach am besten deinen zeilenumbruch erst mal vor den teil wo du die smilies einsetzt. dann sind es schonmal nurnoch 2 zeichen ... blöd is natürlich dann wenn zeichen 76 das : ist und 77 ) ... müsstest dir was schreiben wo alle 76 zeichen prüft ob an der stelle ein smilie kommt und wenn ja dann ein zeichen früher nen zeilenumbruch machen bzw. ein zeichen später damit der smilie noch in der zeile steht.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Sasser

Beginner

  • "Sasser" started this thread

Posts: 8

  • Send private message

3

Sunday, April 10th 2005, 10:27am

Quoted

Original von Prometheus
mach am besten deinen zeilenumbruch erst mal vor den teil wo du die smilies einsetzt. dann sind es schonmal nurnoch 2 zeichen ... blöd is natürlich dann wenn zeichen 76 das : ist und 77 ) ... müsstest dir was schreiben wo alle 76 zeichen prüft ob an der stelle ein smilie kommt und wenn ja dann ein zeichen früher nen zeilenumbruch machen bzw. ein zeichen später damit der smilie noch in der zeile steht.



Hehe... ;)
genau das kriege ich ja net hin... wie kann ich sowas realisieren?? 8o

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

4

Monday, April 11th 2005, 10:57am

Hmm ... ich denke die Textbox gibt dir schon die gewünschten Zeilenumbruch bloss zeigt dir HTML des Zeugs net an da \n != <br>. Insofern würde ich dir
mal Vorschlagen anstatt wordwrap zu verwenden einfach mit nem nl2br() die ganzen \n nach <br> tauschen zu lassen :)

probiers mal aus ... wenn des net funtzt dann krieg ma des schon auch noch anderst hin :)

Ciao Ephraim

Snoopy

Trainee

Posts: 57

  • Send private message

5

Monday, April 11th 2005, 9:51pm

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
$smilies = array(":)"":D"":o"":p"";)"":(""lol"":|");
foreach ($smilies as $key => $val) {
 for ($x=0;$xstrlen($forml),$x++) {
  if (substr($forml$xstrlen($val)) == $val) {
   $smilieno $key 1;
   $forml str_replace($val"<img src='smilies/".$smilieno.".gif'>"$forml);
   $x += strlen("<img src='smilies0.gif'>");
  }
 }
}
$forml nl2br($forml);

Das könnte auch gehen (ungetestet) und hätte den Vorteil (sofern es geht) das Du oben im smilie array auch die smilies einfacher ergänzen könntest.

This post has been edited 2 times, last edit by "Snoopy" (Apr 11th 2005, 9:53pm)


xundy

Beginner

Posts: 37

  • Send private message

6

Wednesday, April 13th 2005, 6:29am

jepp Ephraim hat recht der Fehler ensteht durch dein erzwungenes umbrechen nach 76 Zaichen mache einfach

form1=nl2br(form1);

oder mit str_replace

form1=str_replace("\n","<br />",$form1);

Mfg

Sasser

Beginner

  • "Sasser" started this thread

Posts: 8

  • Send private message

7

Sunday, April 17th 2005, 10:32am

RE: Habe Probs mit Zeilenumbruch

Also Danke erstmal für die antworten...

$form1=nl2br($form1); zeigt zwar net mehr den HTML code sondern jeder smilie macht nen Zeilenumbruch...
(das ist aber leider alles nicht das wahre)

form1=str_replace("\n","<br />",$form1); Funzt gar net ;(

und die anleitung von snoopy ersetzt die smilies nicht :(


ich komme da einfach net weiter ?( :( ;(

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

8

Sunday, April 17th 2005, 10:59am

Macht des mit dem nl2br VOR der Smilie Ersetzung dann sollte des gehen.
Aber warum jeder Smilie bei dir da als Zeilenumbruch fungiert versteh ich nicht ...
Kannst du mal Text posten vor der Smilie Ersetzung und Text nach der Smilie Ersetzung und dann Text nach dem nl2br Ersetzung.

Ciao Ephraim

Sasser

Beginner

  • "Sasser" started this thread

Posts: 8

  • Send private message

9

Sunday, April 17th 2005, 2:03pm

man man man man....

also mit diesem nl2br wird echt jeder simile als zeilenumbruich genutzt,,,
wenn ich aber hinter dem smilie das <br> wegnehme, dann kommt wieder bei einem zeilenumbruch kein smilie sondern der html code..

habe hier mal den code der seite , die die smilies umwandelt, und alles in die daten.txt schreibet... (mysql kann ich nochnet daher txt datei.. bin noch mysql am lernen)

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?
$form1=nl2br($form1);
$form1 str_replace(":)"," <img src='smilies/1.gif'><br>"$form1);
$form1 str_replace(":D"," <img src='smilies/2.gif'><br>"$form1);
$form1 str_replace(":o"," <img src='smilies/3.gif'><br>"$form1);
$form1 str_replace(":P"," <img src='smilies/4.gif'> <br>"$form1);
$form1 str_replace(";)"," <img src='smilies/5.gif'><br>"$form1);
$form1 str_replace(":("," <img src='smilies/6.gif'> <br>"$form1);
$form1 str_replace("lol"," <img src='smilies/7.gif'><br> "$form1);
$form1 str_replace(":|"," <img src='smilies/8.gif'><br>"$form1);
$form1=wordwrap($form180"<br>"1); // 1);
?>
<?
if (isset($_POST['form1']) AND $_POST['form1'] != '') 

{

$daten="$eintrag<!--############# NEU #############-->

<TABLE ID=\"Tabelle5\" BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=\"500\" >
<TR>
<TD WIDTH=267 style=\"word-break:break-all;word-wrap:break-word\"><P><FONT  FACE=\"VERDANA\" size=\"1\"><b>
$titel
</b>&nbsp;verfasst von&nbsp;
<b>
$name
</b>
</FONT>
</P>
</TD style=\"word-break:break-all;word-wrap:break-word\">
<TD ALIGN=RIGHT WIDTH=269 style=\"word-break:break-all;word-wrap:break-word\">
<P ALIGN=RIGHT><FONT  FACE=\"VERDANA\" size=\"-2\">

<a href=\"http://www.icq.com/whitepages/wwp.php?to=$icq\" ><img src=\"icons/flower.gif\"  border=\"0\"></a>&nbsp;&nbsp;
<a href=\"mailto:$mail\" ><img src=\"icons/mail.gif\"  border=\"0\"></a>&nbsp;&nbsp;
<a href=\"$homepage\" target=\"_blank\"><img src=\"icons/page.gif\"  border=\"0\"></a></FONT></P>
        </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 BGCOLOR=\"#D3D3D3\" width=\"50%\"  style=\"word-break:break-all;word-wrap:break-word\">
            <P ><FONT FACE=\"VERDANA\" size=\"-2\"> $form1</font></P>
        </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 HEIGHT=18 style=\"word-break:break-all;word-wrap:break-word\">
            <P><FONT FACE=\"VERDANA\" size=\"-2\">&nbsp;</FONT></P>
        </TD>
    </TR>
</TABLE>
</font><br>";
$datenbank "daten.txt";
$datei fopen($datenbank,"a");
fwrite($datei$daten);
echo "Daten erfolgreich gespeichert!<br><a href=\"gb.php\">Weiter zum Gästebuch</A>";
}
else

echo "Der Betreff wurde nicht ausgefüllt<br> <a href=javascript:history.back()>Erneut versuchen</a>";
?>

This post has been edited 2 times, last edit by "Sasser" (Apr 17th 2005, 2:05pm)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

10

Sunday, April 17th 2005, 3:50pm

Lass mal dieses komische wordwrap am Ende weg .... nl2br macht des schon!!

Ciao Ephraim

Sasser

Beginner

  • "Sasser" started this thread

Posts: 8

  • Send private message

11

Sunday, April 17th 2005, 6:53pm

mhhh... wenn ich wordwarp aber weglasse, dann bricht er keine zeile mehr um...
also wenn jemand


zB;

fffffffffffffffffffffffffffffffffffffffffffffffff....[]...fffffffffffffffffffff

schreibt dann wird das als eine zeile widergegeben und nicht gebrochen :(

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

12

Sunday, April 17th 2005, 7:28pm

Ja und ? das ist überall so und du wirst auch keine Prefekte Lösung für sowas
findet, weil es nie den Perfekten punkt zum umbrechen in sowas gibt.

Also meiner Meinung nach sollte man sich darüber nicht den Kopf zerbrechen,
lern lieber mysql zu bedienen da hast du und auch deiner User mehr von ;)
Ich sag nur geschwindigkeit des Seitenaufbau's!

Ciao Ephraim

wcf.user.socialbookmarks.titel