Sven Mörs: str_replace & &nbsp

Hallo,

habe mit &nbsp noch ein kleines problem.
Ich lese ein Delphi-Quellcode aus einer DB(mysql).
In der DB steht NUR Z.b. folgendes:

Procedure Test;
var i: integer;
begin
  for i:=0 to 100 do
  begin
    If i<=50 then
    ListBox1.Items.Add(inttostr(i))
   else
    ListBox2.Items.Add(inttostr(i));
  end;
end;

Jetzt will ich beim auslesen der DB, dass das so angezeigt wird. Auch mit dem Leerstellen. Dann habe ich gestern hier gepostet wollte es mit <pre> machen, leider ging aber da kein Zeilenumbruch wenn der Text am ende der Tabelle ist sondern die Tabelle wurde vergrößert.
Da hatt einer dann was mit str_replace gepostet und dachte dann das ich das so machen:

....
$row['Code']=str_replace(" ","&nbsp",$row['Code']);
$row['Code']=str_replace("\n","<br /> \n",$row['Code']);
....

Nur leider sieht die Leerstelle nicht so genau aus wie der Code hinzugefügt wurde. Brauche dringend eine lösung wie ich das hinbekomme! Ich hoffe Ihr könnt mit helfen.

MFG
Sven!

  1. Hallo Sven,

    habe mit &nbsp noch ein kleines problem.

    Vielleicht liegt es daran, dass du das Semikolon vergessen hast -> &nbsp;

    Gruß,
    Peetah

    1. Hallo Sven,

      habe mit &nbsp noch ein kleines problem.

      Vielleicht liegt es daran, dass du das Semikolon vergessen hast -> &nbsp;

      Gruß,
      Peetah

      Hi!

      Habe mal das Semikolon hinzugefügt, leider ändert sich nicht.
      Beispiel bei den Code:

      begin
        bla

      muss das b unter das g sein. Und am ende der Tabelle bzw. Browser soll kein Horizontaler Scrollbar kommen, sondern soll einen Zeilenumbruch machen.

      Jemand ne lösung?

      MFG
      Sven!

      1. Absatz bzw. Leerstelle macht er jetzt richtig! Musste einfach Schriftart/Größe ändern, jetzt bleibt aber noch das Problem, wenn der Text am ende der Tabelle oder auch Browser ist das ein Zeilenumbruch gemacht wird. Nehme ich die &nbsp; weg macht er Zeilenumbruch da ich jeder leerstelle umwandel ist es eine Linie und somit wird kein Zeilenumbruch gemacht weil alle Leerstellen dann &nbsp; haben. Beispiel sieht dann so aus:

        test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;

        und somit muss man scrollen weil keine einzige Leerstelle dabei ist...

        1. Huhu Sven

          ich könnte mir eine Lösung von word_wrap() in Kombination mit <pre>-Tags vorstellen.

          http://de2.php.net/manual/en/function.wordwrap.php

          Dann kannst Du Dir auch die Ersetzung der Leerzeichen sparen.

          Wenn Du Wortgrenzen berücksichtigen möchtest musst Du ggf. auch noch  einen regulären Ausdruck bemühen.

          Viele Grüße

          lulu

          --
          bythewaythewebsuxgoofflineandenjoytheday
          1. Hi,

            VIELEN DANK! Das habe ich gesucht - Es geht.

        2. Hi,

          Beispiel sieht dann so aus:

          test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;test1&nbsp;

          und somit muss man scrollen weil keine einzige Leerstelle dabei ist...

          ich würde doch deinen ersten Lösungsansatz mittels <pre> weiterverfolgen. Da hast du nämlich von Anfang an kein Problem damit, die Leerzeichen umwandeln zu müssen. Den Zeilenumbruch bekommst du dann mit wordwrap() (http://de3.php.net/manual/de/function.wordwrap.php) hin (das kannst du aber bei deiner Methode vergessen, da sie auch ein &nbsp; teilen würde).

          Ich bin mir nur nicht sicher, ob diese Funktion direkt mit einem mehrzeiligen String klarkommt. Wenn nicht, müsstest du den String mit explode() (http://de3.php.net/manual/de/function.explode.php) in ein Array zerteilen und dann mit array_map() (http://de3.php.net/manual/de/function.array-map.php) die Funktion wordwrap() auf jedes Element des Arrays (jede Zeile des Strings) anwenden. Z.B. (ungetestet):

          <?php

          // code auslesen
          $code = wordwrap($code, 80);

          /**
           * wenn das nachher nicht klappt:
           *
           * $_rows = explode("\n", $code);
           * $code = implode("\n", array_map("wordwrap", $_rows));
           */

          echo "<pre>\n";
          echo $code;
          echo "</pre>\n";

          ?>

          Gruß,
          Andreas.