• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

STR_REPLACE Hilfe?

Status
Für weitere Antworten geschlossen.

Jul-Place

Neues Mitglied
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 "<img src="smilies/1.gif">" ausgegeben wird.

Mein code den ich bis jetzt habe ist:
PHP:
<?php
$Text = str_replace (':)','<img src="smilies/1.gif>',$Text);
?>
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?

was ich noch nicht weiß muss $Text der name des text feldes sein oder kann das einfach so da stehen?

MfG: Jul-Place
 
Zuletzt bearbeitet:
Du schreibst am besten folgenden Code in die Datei, in die der Text ausgegeben werden soll:
PHP:
<?php
$str = str_replace(":)", '<img src="smilies/1.gif">', $text);
?>
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 "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Datum'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo " | ";
echo "</font>";
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Name'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo ": ";
echo "</font>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Text'];
echo "</font>";
echo "\n";
echo "<p>";        }    } else {
echo"<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">Noch keine Chat einträge!!! :(</font></b></p>\n";    }
?>
 
Zuletzt bearbeitet:
Wenn du einen Artikel mit ID ausgeben wills:

PHP:
<?php

//Smiley-Funktion
function smiley($str) {
$str = str_replace(":)", "<img src='./images/smileys/1.gif' alt='' border='0'>' $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']."<br>".smiley($Text['Inhalt'])."<br><br>";
 }

?>
 
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(":)", '<img src="smilies/1.gif">', $text);
echo $row['text'];
}
?>
Allerdings hab ich das Script nicht getestet und lasse mich gerne verbessern.
Edit:
Da war wohl einer schneller.
 
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(":)", '<img src="smilies/1.gif">', $Text);
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Datum'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo " | ";
echo "</font>";
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Name'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo ": ";
echo "</font>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Text'];
echo "</font>";
echo "\n";
echo "<p>";
}
?>

das funktioniert leider nicht so
 
Zuletzt bearbeitet:
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(":)", '<img src="smilies/1.gif">', $row['Text']);
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Datum'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo " | ";
echo "</font>";
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Name'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo ": ";
echo "</font>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Text'];
echo "</font>";
echo "\n";
echo "<p>";
}
?>
 
-.- 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.
 
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 "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
.......
 
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(":)", '<img src="smilies/1.gif">', $row['text']);
müsste die ) nicht escaped werden?
PHP:
$row['text'] = str_replace(":\)", '<img src="smilies/1.gif">', $row['text']);
 
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(":)", '<img src="images/smilie1.gif">', $row['Text']);
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Datum'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo " | ";
echo "</font>";
echo "<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Name'];
echo "</font></b>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo ": ";
echo "</font>";
echo "<font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">";
echo $row['Text'];
echo "</font>";
echo "\n";
echo "<p>";        }    } else {
echo"<b><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">Noch keine Chat einträge!!! :(</font></b></p>\n";
}
?>

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:
 
Zuletzt bearbeitet:
PHP:
$sql = "SELECT * FROM chat ORDER BY Name ASC LIMIT 25";

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";
 
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']);

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']
oder du benutzt preg_replace() mit dem Modifikator e
PHP:
$row['Text'] = preg_replace("/:\)/ise","".echo $text."", $row['Text']);
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben