ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
529
529
EMPFEHLEN
-
29.10.02 20:14 #1
also ich dreh langsam aber sicher durch
ich hab jetzt schon ewig gesucht aber nix richtiges gefunden.
kann mir irgendjemand erklären wie das mit eregi_replace oder str_replace geht?
ich will smileys einfügen wenn z.B jemand :D schreibt oder so.oder soll ich das lieber mit javascript machen? bitte genau erklären da ich wie gesagt noch nix gefunden hab was mir geholfen hätte.
thxErfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre schlecht machen. - Kurt Tucholsky
-
29.10.02 21:02 #2
etwas detaillierte informationen wären ganz nützlich, z.B. obs du deine informationen aus einer datenbank abrufst oder ähnliches..aber vielleicht wird dir das hier helfen:
wenn du einen string, nennen wir ihn mal $text ausgeben willst, ersetzt du vor der ausgabe in diesem string per str_replace (mit eregi_replace kenn ich mich nicht so gut aus :D) um dein Beispiel aufzugreifen, ":D" durch "<img src="http://www.irgendwas.de/bildxyz.jpeg">"
wenn du nun z.B. eine mysql-abfrage durchgeführt hast (und $text abgefragt hast) sähe das so aus:
die funktionsbeschreibung bei php.net zu str_replace fand ich eigentlich gar nicht schwer..daher hab ich gelernt wie man smileys macht :DPHP-Code:<? str_replace(":D", "<img src='blabla.jpeg'>", $text); //ersetzt :D durch die Quelle für die Smiley-grafik, innerhalb des strings $text
echo "$text";
?>Geändert von Meisterbrau (29.10.02 um 21:05 Uhr)
"sapere aude"
-
02.11.02 11:48 #3
so nun hab ich aber ein problem mit der str_replace funktion vielleicht kann mir da mal jemand helfen!
Ich hab ein newsscript geschrieben und die datei shownews.php regelt die ausgabe von mehreren sachen (news, news und comments, archiv..usw.) und bei jeder dieser ausgaben hatte ich bisher so 20 str_replace stehen, um smileys und so zu ersetzen - also dachte ich mir ich versuch mal das übersichtlicher zu machen und hab folgende funktion geschrieben:
so und dann hatte ich nach einer mysql-abfrage folgendes da stehen:PHP-Code:function ersetzen ($string) {
$string = str_replace("[b]", "<b>", $string);
$string = str_replace("[/b]", "</b>", $string); //ungefähr noch 15 weitere..ist klar denke ich
return $string;
}
so und als ich es ausprobiert hab gab es zwar keine fehlermeldung, aber es wurde auch nix ausgegeben...warum?PHP-Code:$ausgabe = ersetzen($data[inhalt]); //$data[inhalt] stammt aus einem mysql_fetch_array
echo $ausgabe;
"sapere aude"
-
02.11.02 12:30 #4
- Registriert seit
- Jan 2002
- Beiträge
- 169
Hm, man sollte das nicht mit str_replace machen, nimm lieber preg_replace, ist sicherer:
Edit: Ihr müsst nur noch die Leerzeichen entfernenPHP-Code:<?php
function replace($string) {
print(preg_replace("=(\[ b\])(.*)(\[/ b\])=sU","<b>\\\\2</b>",$string));
}
?>
Edit: grml, dummes rumgeparse
Geändert von |[ Kab00m ]| (02.11.02 um 12:32 Uhr)
-
02.11.02 12:41 #5
mmh ich versteh das format von preg_replace irgendwie nit...
erklär mal..(habs im php-manual nit gefunden)
und biste sicher dass das dann klappt?
mit dem print?
weil ich muss ja mehr als eine sache ersetzen...ich weiß nicht...
*verwirrtsei*"sapere aude"
-
02.11.02 12:56 #6
- Registriert seit
- Jan 2002
- Beiträge
- 169
ja, ob du nun print oder return verwendest ist im prinzip laddn

Also, preg_replace ersetzt teile von strings nach einem angegebenen muster, in diesem fall sucht er in dem angegebenen string nach einem text der zwischen [ b] und [/ b] steht und macht ihn fett
Wenn du str_replace verwendest wird jedes [ b] mit <b> ersetzt, also kann jemand den gaaaanzen nachfolgenden text in deinem gb/forum/wasauchimmer fett machen. preg_replace lässt in dem fall nur <b> zu wenn auch ein dazu passendes </b> folgt.
Zum format soviel: Alles was in () steht wird später zu einem \\n wobei n eine fortlaufende nummer ist
deshalb ist \\2 auch der teil im ausdruck: (.*) was soviel heisst wie "alles zwischen [ b] und [/ b].
Edit: Krass, im [ php]-tag parst er die \ und im normalen text nicht...
-
02.11.02 13:08 #7
also muss ich jetzt quasi die funktion so aufbauen:
oder? (sorry aber ich bin heut morgen irgendweie schwer von begriffPHP-Code:function replace ($string){
$string = preg_replace("=([ b])(.*)([/ b])=sU","<b>\\2</b>",$string);
$string = preg_replace("=([ i])(.*)([/ i])=sU","<i>\\2</i>",$string);
/* und so weiter */
return $string;
}
)
aber der teil nach der abfrage:
ist richtig so, oder?PHP-Code:$ausgabe = replace($data[inhalt]);
echo $ausgabe;
viele fragen...was ist wohl die antwort..
gespannt wartet euer meisterbrau"sapere aude"
-
02.11.02 13:31 #8
- Registriert seit
- Jan 2002
- Beiträge
- 169
Jo, das ist richtig, vor der 2 im Code müssen immer 2 \ stehen, aber der eine wurde vom Forum weggeparst, also passt das schon

Edit: Achja, du kannst an das Ende des Ausdrucks hinter =sU noch ein "i" hängen, dann ist der Ausdruck nicht mehr Case-Sensitive, also geht [ b] und [ B]
Geändert von |[ Kab00m ]| (02.11.02 um 13:33 Uhr)
-
02.11.02 13:57 #9
jo das mit den 2 \ ist klar..
2 fragen noch (man bin ich neugierig,was?
):
1. hast du vielleicht den link zu der erklärung von preg_replace
2. (kann durch 1 beantwortet werden) und wofür steht sU?
achja und natürlich bevor ichs vergesse:
Vielen Dank @ Kab00m!
p.s.: eine sache haben wir beide vergessen, die mir auffiel als ichs testen wollte und ein lustiger buchstabensalat rauskam:
die eckigen Klammern im Suchmuster müssen escaped werden
sonst ersetzt der jedes "b"
Geändert von Meisterbrau (02.11.02 um 15:30 Uhr)
"sapere aude"
-
02.11.02 23:58 #10
- Registriert seit
- Jan 2002
- Beiträge
- 169
hmmm, zu preg_replace() findest du zB hier was: http://www.dclp-faq.de/ch/ch-regexp.html
http://www.php.net/preg_replace
Hm, sU steht für ... ööhm, lass mich nicht lügen ... *such* ... Ich habe keine Ahnung, ich packs an alle meine regulären Ausdrücke, würd mich aber auch mal Interessieren
Wenn du es weisst pm mich doch ma pls
Ähnliche Themen
-
ICQ Smileys
Von Peter Klein im Forum InternetkommunikationAntworten: 5Letzter Beitrag: 12.07.06, 15:00 -
smileys
Von coolerouny im Forum PHPAntworten: 4Letzter Beitrag: 19.11.05, 16:58 -
Smileys
Von tittli im Forum PHPAntworten: 12Letzter Beitrag: 11.11.04, 16:15 -
Smileys im GB
Von webchillr im Forum PHPAntworten: 10Letzter Beitrag: 20.05.02, 13:19





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren