kostenloser Webspace werbefrei: lima-city


"richtiges" zitieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    Ich mache gerade ein Forum.
    Dabei wird so ?hnlich zitiert wie hier bei lima.
    Der Text wird aus der Db ausgelesen und per JS in das Textfeld eingef?llt.

    Jetzt habe ich allerdings das Problem, dass z.b der Text:
    "
    bla
    blubb
    muh
    "
    nciht so zitiert wird, sondern:
    "blablubbmuh"
    ausser eben, dazwischen sind noch Leerzeichen.

    Jetzt frage ich mal euch:
    Wie kann ich das verhindern?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    versuche es mit \n als Newline-Zeichen.
    Das sollte gehen.

    mfg,
    hr

    Beitrag ge?ndert am 29.07.2006 23:40 von heavyraptor
  4. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.



    heavyraptor schrieb:
    Hi,

    versuche es mit \n als Newline-Zeichen.
    Das sollte gehen.

    mfg,
    hr

    Beitrag ge?ndert am 29.07.2006 23:40 von heavyraptor

    Und wie soll ich \n als Newline zeichen einsetzen?
  5. Hi,

    wie wird eigentlich der Text geparst? Mit Javascript?
    Newline musst du einfach so eif?gen:
    var v = "Text\ntext.";

    mfg,
    hr
  6. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    heavyraptor schrieb:
    Hi,

    wie wird eigentlich der Text geparst? Mit Javascript?
    Newline musst du einfach so eif?gen:
    var v = 'Text\ntext.';

    mfg,
    hr

    Wie, geparst?
    ein Link sieht eben z.b so aus:

    <a href="Javascript: insert('
    BLA![/quote ]')">Zitieren</a>

    Mein Problem ist nur, dass der Text ja vom user eingegebenen wird und ich praktisch eine variable l?sung brauche.
    Ich kann ja nicht jeden Text so editieren =(

    EDIT:
    Und was ist hier mit dem Zitiern los?
    Oder bin ich nur zu doof? -.-

    Beitrag ge?ndert am 30.07.2006 00:03 von benutzernaemelchen
  7. Hi,

    dann musst du in insert('
    BLA![/quote ]') die Newlinezeichen einf?gen, z.B. so:
    insert('
    BLA!\nMehr Text\nNoch Mehr[/quote ]')
    Dann sollte der text als folgendes erscheinen:
    BLA!
    Mehr Text
    Noch Mehr[/quote ]

    Alles klar?

    mfg,
    hr

    Beitrag ge?ndert am 30.07.2006 00:07 von heavyraptor
  8. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.



    heavyraptor schrieb:
    Hi,

    dann musst du in insert('
    BLA![/quote ]') die Newlinezeichen einf?gen, z.B. so:
    insert('
    BLA!\nMehr Text\nNoch Mehr[/quote ]')
    Dann sollte der text als folgendes erscheinen:
    BLA!
    Mehr Text
    Noch Mehr[/quote ]

    Alles klar?

    mfg,
    hr

    Beitrag ge?ndert am 30.07.2006 00:07 von heavyraptor

    Ich wei? aber garnicht, wie der Text hei?t.
    So m?sste ich es mit str_replace() machen.
    Aber was ersetzen, wenn garnichts da ist?
  9. Hi,

    du hast wirklich Problem mit dem Zitieren was? :biggrin: just kidding

    Zum Thema:
    Wie werden die Daten denn eingetragen? Bleiben die Newlinezeichen nicht da?

    mfg,
    hr
  10. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.


    heavyraptor schrieb:
    Hi,

    du hast wirklich Problem mit dem Zitieren was? :biggrin: just kidding

    Zum Thema:
    Wie werden die Daten denn eingetragen? Bleiben die Newlinezeichen nicht da?

    mfg,
    hr

    Da kann ich garnix f?r xD


    Naja, ich hab eine formate() funktion geschrieben, f?r den text:

    function formate( $text )
    {
        $text = addslashes(htmlspecialchars(stripslashes ($text)));
    	$handle=opendir('images/smilies/');
    	while ($file = readdir ($handle))
    	{
    	    if ($file != "." && $file != "..")
    		{
    			$file_without_suffix = explode('.',$file);
    			$text = str_replace(':'.$file_without_suffix[0].':','<img src="images/smilies/'.$file.'">',$text);
    	    }
    	}
    	closedir($handle);
    	$text = preg_replace("#\[url=(.+)\](.+)\[/url\]#isU", "<a href=\"\1\">\2</a>", $text);
    	$text = preg_replace("/\[b\](.*?)\[\/b\]/si", "<strong>\\1</strong>", $text);
    	$text = preg_replace("/\[i\](.*?)\[\/i\]/si", "<i>\\1</i>", $text);
    	$text = preg_replace("/\[u\](.*?)\[\/u\]/si", "<u>\\1</u>", $text);
    	$text = preg_replace("/\[center\](.*?)\[\/center\]/si", "<center>\\1</center>", $text);
    	$text = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a href=\\1>\\1</a>", $text);
    	 $text = preg_replace("/\[code\](.*?)\[\/code\]/si", '<center>CODE:<div style="text-align:left;border:1px solid black;font-size:12px;color:green;background-color:#CCCCCC;width:50%;padding:5px;">\\1</div></center>', $text);
    	$text = preg_replace("/\[img\](.*?)\[\/img\]/si", '<img src=\\1 border="0">', $text);
    	$text = nl2br($text);
       
        $text = str_replace("\'","'",$text);
    
    	return $text;
    }

    Die list alle Smilies aus einem Ordner und legt auch das geeignete str_replace an.

    F?r die Quotes habe ich die Funktion von wiki4you genommen:

    function parseQuoteRecursive($input)
    {
    	$regex = '#\[quote]((?:[^[]|\[(?!/?quote])|(?R))+)\[/quote]#';
    	if (is_array($input))
    	{
    		$input = '<div style="margin: 10px; padding: 4px; border: 1px solid #0000FF">Zitat: <br />'.$input[1].'</div>';
    	}
     	return preg_replace_callback($regex, 'parseQuoteRecursive', $input);
    }


    und ausgegeben wird das dann wiederum so:

    while($fetch_asw = mysql_fetch_array($query_asw))
    	{
    	    echo '<tr><td><strong>'.get_nick($fetch_asw['autor']).'<br /> <a href="Javascript: insert(\' [quote] '.echo_asw($fetch_asw['text']).'[/quote] \')">Zitieren</td><td>'.parseQuoteRecursive(formate($fetch_asw['text'])).'</td></tr>';
    	}



    EDIT: -.-

    Beitrag ge?ndert am 30.07.2006 00:19 von benutzernaemelchen
  11. Hi,

    bei deinem Code f?llt mir so auf den ersten Blick nichts falsches auf. Wie werden denn die Daten gespeichert? Ich meine wenn jemand ein Post schreibt, bleiben die Newlinezeichen dort erhalten?

    Schau mal den Inhalt der MySQL Tabelle an, um zu sehen, ob dort die Newlinezeichen sind oder nicht.

    mfg,
    hr
  12. Autor dieses Themas

    benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.



    heavyraptor schrieb:
    Hi,

    bei deinem Code f?llt mir so auf den ersten Blick nichts falsches auf. Wie werden denn die Daten gespeichert? Ich meine wenn jemand ein Post schreibt, bleiben die Newlinezeichen dort erhalten?

    Schau mal den Inhalt der MySQL Tabelle an, um zu sehen, ob dort die Newlinezeichen sind oder nicht.

    mfg,
    hr

    Nee, da stehen keine.
    Ich gebe es eben nachher mit nl2br() aus.
    Oder sollet man es in diesem Fall dann mit nl2br() speichern?
  13. Hi,

    das w?re eine Gute Idee, vielleicht speichert MySQL keine Newlinezeichen. Probier das mal aus, dass m?sste eventuell gehen.

    Vielleicht muss du auch \r\n durch \n und \r durch \n ersetzten, bevor du den Post des Users abspeicherst.

    mfg,
    hr
  14. s*********e


    Nee, da stehen keine.
    Ich gebe es eben nachher mit nl2br() aus.
    Oder sollet man es in diesem Fall dann mit nl2br() speichern?


    moin xD
    ich komm mal hinzu^^

    wenn du Quote nutzen willst, du aber dieses problem hast, mach es doch wie folgt:

    Dein Quote-Button bekommt ein Formular, in diesem Formular ist ein hidden input mit der postid und zb. dem namen quote

    dann machst du nun einfach beim antowrten eine ?berpr?fung, ob es eine variable $quote gibt, die von einem formular gesendet wurde ($_POST["quote"];)

    wenn dies so ist, l?sst du von diesem post einfach den text auslesen (du machst ne neue mysql_query) und speicherstd en text als variable ab..zb.
    $quotetext = nl2br($row["text"]);
    vllt dannn auhc noch den autorenname
    $quoteautor = $row["autor"];

    bei deinem textfeld dann einfach wieder ?berpr?fen, ob es ein quote gibt, wenn ja, soll im textfeld stehen:
    [quote=$quoteautor]
    $quotetext
    [/quote]

    Schon hat alles Umbr?che und du bist fertig.
    Aufwendiger, aber dann musst du den Text wenigstens nicht so abspeichern...

    Beitrag ge?ndert am 30.07.2006 08:22 von specialdune
  15. t*****b

    $text = stripslashes(nl2br($text));
  16. Hi,

    trueweb schrieb:
    $text = stripslashes(nl2br($text));

    Das ver?ndert leider nicht viel, weil es ja gar keine Newlinezeichen gibt, die mit nl2br() umgewandelt werden k?nnen.

    @benutzernaemelchen:
    Wenn deine Idee nicht funktioniert hat, versuch mal folgendes:
    User schreibt Post --> \r\n durch \n ersetzen, \r durch \n ersetzen; den Post mit nl2br() in der Datenbank abspeichern
    Daten auslesen --> Daten mit "br2nl()" (<br /> durch \n ersetzten ...) bearbeiten und gew?hnlich mit parseQuoteRecursive() und formate() ausgeben.

    mfg,
    hr
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!