PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Problem mit Ersetzen von Zeichen (http://www.selfphp.de/forum/showthread.php?t=8307)

Sengi 31.07.2004 18:59:02

Problem mit Ersetzen von Zeichen
 
Schönen Samstag euch allen :)

Ich quäle mich schon seid einigen Stunden mit folgendem Problem rum:

Ein Array ist gefüttert mit folgenden Werten: :),:(,:keks:,:shock,8-)
und trägt den Namen smile_code.
Ein zweiter Array beinhaltet die passenden Urls für die Grafiken der Smilies.

So folgender String muss bearbeitet werden:

PHP-Code:

$string=":) Test Bei mir klappt rein gar nichts :("

Um jetzt den Smile Code gegen die passende Url zu tauschen versuche ich folgendes:

PHP-Code:

$string=str_replace($smile_code,$smile_url,$string); 

Das klappt aber leider nicht. Der String bleibt unverändert.

Die beiden Arrays beinhalten ca. 300 Einträge und werden aus ner DB eingelesen.

Habe es auch schon mit anderen Funktionen versucht wie mit
PHP-Code:

preg_match() 

, aber ich bekomm das einfach nicht hin...

Vielleicht hat ja jemand von euch eine kleine Idee die mir weiter helfen könnte.


greetz Sengi

René_M 31.07.2004 19:10:44

Zitat:

Original geschrieben von Sengi

Die beiden Arrays beinhalten ca. 300 Einträge und werden aus ner DB eingelesen.
Mit den beiden Arrays meinst du $smile_code und $smile_url ?

Poste mal den Code wie du aus den Werten aus der DB die beiden Arrays erstellst.

Sengi 31.07.2004 19:38:15

hier :
PHP-Code:

$sql_smile="SELECT
                    code,smile_url
              FROM
                  phpbb_smilies"
;
  
$result_smile=mysql_query($sql_smile) or die(mysql_error());
  
$i=0;
  while(
$row_smile=mysql_fetch_assoc($result_smile)){
     
$smile_code[$i]=$row_smile['code'];
     
$smile_url[$i]=$row_smile['smile_url'];

  }
  
  
$string=str_replace($smile_code,$smile_url,$string); 


hab noch ein paar andere möglichkeiten hier rumfliegen die auch alle nicht funktionieren... aber an diesem script arbeite ich momentan mit der hoffnung dass es vielleicht funktionieren könnte :)

René_M 31.07.2004 19:48:37

PHP-Code:

  $i=0;
   while(
$row_smile=mysql_fetch_assoc($result_smile)){
     
$smile_code[$i]=$row_smile['code'];
     
$smile_url[$i]=$row_smile['smile_url'];

  } 

$i ist immer 0 dein jeweiliges Array hat nur ein Element bzw. du überschreibst bei jedem Schleifendurchlauf dieses. Am Ende hast du in dem jeweiligen Array immer nur das letzte Element aus der DB.

Schreibe unter $smile_url[$i]=$row_smile['smile_url'];

$i++;

Sengi 01.08.2004 12:05:13

Argh sowas muss mir auch immer im Eifer des Gefechts passieren :)

Dank dir

FrankyH 07.01.2007 05:48:07

AW: Problem mit Ersetzen von Zeichen
 
Moin moin, ich hab lange gesucht und diesen Beitrag hier als besten Ansatz herausgesucht, allerdings immer noch keinen Lösungsweg gefunden.
Ich habe ein Datenbank für Farbwerte mit verschiedenen Tabellen. In der Haupttabelle sind jeweils alle möglichen Kombinationen gelistet, mit dem Wert "id" und dem dazugehörigen Farbnamen (farbname).

In allen anderen Tabellen wird die Farbe jeweils als "ral_id" deklariert und nur als Nummer ausgegeben, was sehr blöd ist. Ich benötige nun bei der Abfrage der anderen Tabellen zusätzlich die Ausgabe der entsprechend zugewiesenen ID mit dem Farbnamen als Wort, denn jede Farbe hat auch einen Wortlaut zugewiesen, und id und ral_id sind die selben Werte.
Warum das jedoch nicht in einer einzigen Tabelle steht, ist nicht zu erkennen. Möglicherweise hat das mal jemand hinzugefriemelt...
Ich habe hier mal die beiden Einzelabfragen in eine Datei geklatscht, um zu zeigen was ich meine.


PHP-Code:

<?php
#Abfrage Nummer1
$abfrage_1 'SELECT id, farbname FROM hauptfarben'
$ergebnis_1 mysql_query($abfrage_1) or die( mysql_error() ); 
while(
$row_1 mysql_fetch_array($ergebnis_1)) 

#Ausgabe des ersten Arrays zur Probe
{
echo 
"Farbname : ".$row_1['farbname'].;
echo 
"Farb-ID  : ".$row_1['id'].;
}


#Abfrage Nummer2
$abfrage_2 'SELECT ral_id, anteil_cyan, anteil_magenta, anteil_yellow FROM farbvarianten WHERE anteil_cyan IS NOT NULL AND anteil_cyan != "" '
$ergebnis_2 mysql_query($abfrage_2) or die( mysql_error() ); 
while(
$row_2 mysql_fetch_array($ergebnis_2)) 

#Ausgabe des zweiten Arrays zur Probe
{
echo 
"Farb-ID       : ".$row_2['ral_id'].;
echo 
"Anteil Cyan   : ".$row_2['anteil_cyan'].;
echo 
"Anteil Magenta: ".$row_2['anteil_magenta'].;
echo 
"Anteil Yellow : ".$row_2['anteil_yellow'].;
}
?>


Ist denn der Denkansatz überhaupt richtig, dass man die entsprechende Variable des zweiten Arrays (ral-id) einfach mit der des ersten überschreiben kann? Schätze ja, doch wie genau geht das?
Den Codeschnipsel umstricken hat leider nicht geklappt. Ich bekomme einfach nicht beide Arrays überein und schon gar nicht den Wert der ID als Wort zusätzlich zur ral_id mit ausgegeben.
Auch bin ich mir ncht ganz sicher bezüglich der Abfrage, wäre mysql_fetch_assoc nicht einfacher? Die Beispiele auf php.net sind auch gleich wieder um einiges zu groß für mein Grundwissen. Kann hier irgendwer helfen?

Thx Franky


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:56:19 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.