"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[SOLVED]Mit php Absätze aus Strings entfernen?

Sokrates 21.03.2004 - 13:43 1780 11
Posts

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
Hallo!
Ich versuche gerade ein gästebuch in php zu coden...
Es funktioniert schon ganz gut nur gibts das Problem, dass bei einer Eingabe mit Absätzen der String diese Absätze beibehält.
Das ist insofern blöd weil ich jeden Eintrag in einer einzelnen Zeile speichere und durch die Absätze wird jedes Mal eine neue Zeile angefangen...

Kennt wer eine Funktion die einen String nach Absätzen durchsucht und diese entfernt?

Für andere Lösungsvorschläge bin ich natürlich auch sehr dankbar =)

Tia
mfG Sokrates
Bearbeitet von Sokrates am 22.03.2004, 16:32

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12071
$out=ln2br($in);

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
findest du es wirklich gut, die zeilenumbrüche zu verwerfen? ich würd mir da als user etwas verarscht vorkommen :)

escapen (\n-->\\n) wäre eine alternative

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
Danke für die schnellen Antworten...
@ Colossus...mit der funktion nl2br kommt folgende ausgabe:
Code:
Hugo 123|asda@|sdasda<br />
asd<br />
asd<br />
asd<br />
asd<br />
asdas<br />
dasd<br />
asd<br />
|21-March-2004 13:47:47

@ manalishi
Wie meinst du das mit dem escapen?
Optimal wäre es den String einzeilig in dem file stehen zu haben aber die Formatierung dann wieder herstellen zu können...
Mir ist noch nicht klar wie du das meinst...

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12071
versuch str_replace("\n","",$in);

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Hmmm versuch mal $text = str_replace("\n", "<br>", $text);

btw würde ich als Trennzeichen nicht | verwenden, da das ja auch im Text oder im Namen vorkommen kann. Verwende am besten chr(27) oder so was...

//edit: hehe collossus war schneller

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
str_replace haut leider auch nicht hin...
danke für den tip mit chr(27) ist eine gute idee!

ich glaub ich bastel mir eine eingene funktion, danke für eure hilfe!
mfG Sokrates

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
speicherst du in einem file oder in einer db?

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
in einem File...
weißt du eine Lösung?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
also, du machst es so:
$text = str_replace("\n", "<br>", $text);
$out = $name.chr(27).$email.chr(27).$title.chr(27).$text.chr(27).$date

ich hoffe du verstehst wie ich das meine...

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
vielleicht hilft dir dass.. aber insgesamt kann ich mir nicht vorstellen, dass du wirklich die absätze löschen willst. es ist eigentlich egal wieviele zeilen du bei einem entry hast. nimm einfach einen seperator bzw. eine sequenz (zB: ?|?) und trenn deine einträge damit.

hier ist das was du wolltest:
Code: PHP
<?php

$pFile = fopen("gb.dat","r+");
if (!$pFile)
	$pFile = fopen("gb.dat","w") or die("Error: Could not create file!");
else
{
	$szContent = fread($pFile,filesize("gb.dat"));

	$aEntries = explode("\r\n",$szContent);
}

if (isset($szEntry) && $szEntry != "")
{
	$szEntry = str_replace("\n"," ",$szEntry);

	fwrite($pFile,$szEntry."\r\n");
	$aEntries[] = $szEntry;

	echo "New entry added!<br>";
}

if (isset($aEntries) && count($aEntries) > 0)
{
	$szEntries = "";
	foreach($aEntries as $nKey => $szEntry)
	{
		$szEntries .= "Entry $nKey: $szEntry<br>";
	}
}

fclose($pFile);

?>

<html>

<body>
<form method="post">
 Eintrag:<br>
 <textarea name="szEntry" cols="40" rows="8"></textarea>
 <input type="submit" value="gib ihm" name="submitEntry">
</form>
<hr>
<?php echo $szEntries ?>
</body>
</html>

Sokrates

Big d00d
Avatar
Registered: Feb 2003
Location: depending on tim..
Posts: 164
So jetzt ist es gelöst!
Code: PHP
$message2=str_replace("\r"," ",$message2);
$message2=str_replace("\n"," ",$message2);
das \r war auch wichtig.....

@mat, ich deinen code probiert nur hat er bei mir nicht funktioniert...
danke nochmals für alle beiträge sie waren sehr hilfreich!

mfG
Sokrates
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz