str_replace &  
Sven Mörs
- php
Hallo,
habe mit   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(" "," ",$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!
Hallo Sven,
habe mit   noch ein kleines problem.
Vielleicht liegt es daran, dass du das Semikolon vergessen hast ->
Gruß,
Peetah
Hallo Sven,
habe mit   noch ein kleines problem.
Vielleicht liegt es daran, dass du das Semikolon vergessen hast ->
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!
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 weg macht er Zeilenumbruch da ich jeder leerstelle umwandel ist es eine Linie und somit wird kein Zeilenumbruch gemacht weil alle Leerstellen dann haben. Beispiel sieht dann so aus:
test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1
und somit muss man scrollen weil keine einzige Leerstelle dabei ist...
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
Hi,
VIELEN DANK! Das habe ich gesucht - Es geht.
Hi,
Beispiel sieht dann so aus:
test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1 test1
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 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.