STR_REPLACE Hilfe?

Hallo, ich habe ein Problem mit str_replace ich bin dran ein chat am programmieren und dann möchte ich das im chat frame wenn man den befehl „:)“ eingibt das dann das dazu passende smilie „“ ausgegeben wird.

Mein code den ich bis jetzt habe ist:
[PHP]

<?php $Text = str_replace (':)','<img src="smilies/1.gif>',$Text); ?> <p>[/PHP]<br> mein problem ist jetzt wo muss ich den code einfügen in den chat frame (da sind alle einträge) oder da wo ich die eingabe schreibe?</p> <p>was ich noch nicht weiß muss $Text der name des text feldes sein oder kann das einfach so da stehen?</p> <p>MfG: Jul-Place</p>

Du schreibst am besten folgenden Code in die Datei, in die der Text ausgegeben werden soll:
[php]

<?php $str = str_replace(":)", '', $text); ?>

[/php]
Hierbei muss $text der auszugebene Text sein.

Hey, danke für die schnelle antwort also meine ganzen einträge werden in einer MySQL DB gespeichert muss ich da noch was beachten?

Alles auslesen tu ich so:
[PHP]

<?php mysql_connect("localhost", "MYSQL#NAME", "MYSQL#PW") or die("Keine Verbindung möglich: " . mysql_error()); mysql_select_db("MYSQL#DATABASE"); $sql = "SELECT Datum, Name, Text, name FROM chat"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { echo ""; echo $row['Datum']; echo ""; echo ""; echo " | "; echo ""; echo ""; echo $row['Name']; echo ""; echo ""; echo ": "; echo ""; echo ""; echo $row['Text']; echo ""; echo "\n"; echo "

"; } } else { echo"Noch keine Chat einträge!!! :(

\n"; } ?>

[/PHP]

Wenn du einen Artikel mit ID ausgeben wills:

[php]<?php

//Smiley-Funktion
function smiley($str) {
$str = str_replace(„:)“, "’ $str;

}

//Artikel lesen
$sql = „SELECT * FROM Artikel ORDER BY Id ASC LIMIT 10“;
$query = mysql_query($sql);
while ( $Text = mysql_fetch_assoc ($query) )
{
echo „Titel: „.$Text[‚Titel‘].“
“.smiley($Text[‚Inhalt‘]).„

“;
}

?>[/php]

Dann sollte $text eben der aus der MySQL-DB ausgelesene Text sein.
Ungefähr so:
[php]

<?php //Vorher zur DB connecten $sql = "SELECT text FROM chat ORDER by text"; $qry = mysql_query($sql); while($row = mysql_fetch_array($qry)) { $str = str_replace(":)", '', $text); echo $row['text']; } ?>

[/php]
Allerdings hab ich das Script nicht getestet und lasse mich gerne verbessern.
Edit:
Da war wohl einer schneller.

Danke euch beiden werde das gleich mal testen =)

Habe das jetzt mal so umgeschrieben:
[PHP]

<?php mysql_connect("localhost", "......", "......") or die("Keine Verbindung möglich: " . mysql_error()); mysql_select_db("......"); $sql = "SELECT Datum, Name, Text, name FROM chat"; $qry = mysql_query($sql); while($row = mysql_fetch_array($qry)) { $str = str_replace(":)", '', $Text); echo ""; echo $row['Datum']; echo ""; echo ""; echo " | "; echo ""; echo ""; echo $row['Name']; echo ""; echo ""; echo ": "; echo ""; echo ""; echo $row['Text']; echo ""; echo "\n"; echo "

"; } ?>

[/PHP]

das funktioniert leider nicht so

[php]
$str = str_replace(„“, ‚‘, $Text);
[/php]
Ist falsch.
Ändere $Text in $row[‚Text‘] um.

  1. Bitte die [noparse][php][/noparse]-Codes benutzen und den Code einrücken.
  2. Würde ich den normalen Code ausgeben und jede Variabel in der Funktion smiley() ausgeben, die definiert wurde. Netüclih müssen alle Felder in der DB in der richtigen Tabelle vorhanden sin. Der Code muss ja auch nen Sinn ergeben.

so funtzt das leider auch nich :(((((
[PHP]

<?php mysql_connect("localhost", "......", ".....") or die("Keine Verbindung möglich: " . mysql_error()); mysql_select_db("......"); $sql = "SELECT Datum, Name, Text, name FROM chat"; $qry = mysql_query($sql); while($row = mysql_fetch_array($qry)) { $str = str_replace(":)", '', $row['Text']); echo ""; echo $row['Datum']; echo ""; echo ""; echo " | "; echo ""; echo ""; echo $row['Name']; echo ""; echo ""; echo ": "; echo ""; echo ""; echo $row['Text']; echo ""; echo "\n"; echo "

"; } ?>

[/PHP]

-.- Es bringt auch nichts den erstezten Inhalt an die Variabel $str zu übergeben. Wenn du in $row[‚Text‘ alles ersetzt musst du auch statt $row[‚Text‘] dann String ausgeben lassen. Ich sage ja mit einer Funktion wäre es einfacher.

naja ok das kann auch mal warten habe da aber noch ein prob, wie kann ich die neusten einträge nach unten setzen???

Mit ORDER BY im Query

ASC = Ältester zuerst
DESC = Neuester zuerst

SELECT * FROM chat ORDER BY id DESC LIMIT 25

Habe das mal so versucht nur geht nicht wirklich kannst du mir das bitte verbessern?

[PHP]

<?php mysql_connect("localhost", "...", "...") or die("Keine Verbindung möglich: " . mysql_error()); mysql_select_db("....."); $sql = "SELECT * FROM chat ORDER BY Name ASC LIMIT 25"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { echo ""; ....... [/PHP]

Lass die if-Anweisung weg und benutze die Funktion. Hab jetz leider keine Zeit mehr aber wenn du willst, schick ich dir heute Abend per PN nen funktionierenden Code.

[PHP]
$row[‚text‘] = str_replace(„:)“, ‚‘, $row[‚text‘]);
[/PHP]
müsste die ) nicht escaped werden?
[PHP]
$row[‚text‘] = str_replace(„:)“, ‚‘, $row[‚text‘]);
[/PHP]

Soa jetzt erstmal Danke an Frank das funktioniert jetzt einwandfrei was die smilies an geht =). freu Supiiiiiii

dankeee

Das sieht jetzt alles so aus:
[PHP]

<?php mysql_connect("localhost", "...", "...") or die("Keine Verbindung möglich: " . mysql_error()); mysql_select_db("..."); $sql = "SELECT * FROM chat ORDER BY Name ASC LIMIT 25"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { $row['Text'] = str_replace(":)", '', $row['Text']); echo ""; echo $row['Datum']; echo ""; echo ""; echo " | "; echo ""; echo ""; echo $row['Name']; echo ""; echo ""; echo ": "; echo ""; echo ""; echo $row['Text']; echo ""; echo "\n"; echo "

"; } } else { echo"Noch keine Chat einträge!!! :(

\n"; } ?>

[/PHP]

Was jetzt nur noch nicht stimmt es das die neusten einträge nach unten kommen da hilft mir NetzSchleicher ja nachher weiter danke euch allen =)

MfG:

[php]$sql = „SELECT * FROM chat ORDER BY Name ASC LIMIT 25“;[/php]

Das ist deine aktuelle Query. Ich hatte vorhin gesagt, dass ASC immer den Ältesten nach oben stellt. machs einfach so:

[php]$sql = „SELECT * FROM chat ORDER BY Name DESC LIMIT 25“;[/php]

Danke, Schnell noch eine frage wie mache ich das, das vll. ein echo ausgegeben wird?

[PHP]
$row[‚Text‘] = str_replace(„:)“, ‚<?php echo "text"; ?>">‘, $row[‚Text‘]);
[/PHP]

also so geht es nicht weiß einer von euch das vll.

MfG

ähm einfach
[PHP]
$row[‚Text‘] = str_replace(„:)“,„text“, $row[‚Text‘]);
echo $row[‚Text‘]
[/PHP]
oder du benutzt preg_replace() mit dem Modifikator e
[PHP]
$row[‚Text‘] = preg_replace(„/:)/ise“,„“.echo $text.„“, $row[‚Text‘]);
[/PHP]