tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
529
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von haldjo1
    haldjo1 haldjo1 ist offline Mitglied Gold
    Registriert seit
    Jul 2002
    Ort
    Bad Waldsee (Baden Württemberg)
    Beiträge
    162
    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.

    thx
     
    Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre schlecht machen. - Kurt Tucholsky

  2. #2
    Avatar von Meisterbrau
    Meisterbrau Meisterbrau ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Koblenz (RLP!)
    Beiträge
    44
    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:
    PHP-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";
    ?>
    die funktionsbeschreibung bei php.net zu str_replace fand ich eigentlich gar nicht schwer..daher hab ich gelernt wie man smileys macht :D
    Geändert von Meisterbrau (29.10.02 um 21:05 Uhr)
     
    "sapere aude"

  3. #3
    Avatar von Meisterbrau
    Meisterbrau Meisterbrau ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Koblenz (RLP!)
    Beiträge
    44
    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:
    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 dann hatte ich nach einer mysql-abfrage folgendes da stehen:
    PHP-Code:
    $ausgabe ersetzen($data[inhalt]); //$data[inhalt] stammt aus einem mysql_fetch_array
    echo $ausgabe
    so und als ich es ausprobiert hab gab es zwar keine fehlermeldung, aber es wurde auch nix ausgegeben...warum?
     
    "sapere aude"

  4. #4
    |[ Kab00m ]| |[ Kab00m ]| ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    169
    Hm, man sollte das nicht mit str_replace machen, nimm lieber preg_replace, ist sicherer:

    PHP-Code:
    <?php
    function replace($string) {
        print(
    preg_replace("=(\[ b\])(.*)(\[/ b\])=sU","<b>\\\\2</b>",$string));
    }
    ?>
    Edit: Ihr müsst nur noch die Leerzeichen entfernen
    Edit: grml, dummes rumgeparse
    Geändert von |[ Kab00m ]| (02.11.02 um 12:32 Uhr)
     

  5. #5
    Avatar von Meisterbrau
    Meisterbrau Meisterbrau ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Koblenz (RLP!)
    Beiträge
    44
    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"

  6. #6
    |[ Kab00m ]| |[ Kab00m ]| ist offline Mitglied Gold
    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...
     

  7. #7
    Avatar von Meisterbrau
    Meisterbrau Meisterbrau ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Koblenz (RLP!)
    Beiträge
    44
    also muss ich jetzt quasi die funktion so aufbauen:

    PHP-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;

    oder? (sorry aber ich bin heut morgen irgendweie schwer von begriff )
    aber der teil nach der abfrage:
    PHP-Code:
    $ausgabe replace($data[inhalt]);
    echo 
    $ausgabe
    ist richtig so, oder?
    viele fragen...was ist wohl die antwort..
    gespannt wartet euer meisterbrau
     
    "sapere aude"

  8. #8
    |[ Kab00m ]| |[ Kab00m ]| ist offline Mitglied Gold
    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)
     

  9. #9
    Avatar von Meisterbrau
    Meisterbrau Meisterbrau ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Koblenz (RLP!)
    Beiträge
    44
    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"

  10. #10
    |[ Kab00m ]| |[ Kab00m ]| ist offline Mitglied Gold
    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

  1. ICQ Smileys
    Von Peter Klein im Forum Internetkommunikation
    Antworten: 5
    Letzter Beitrag: 12.07.06, 15:00
  2. smileys
    Von coolerouny im Forum PHP
    Antworten: 4
    Letzter Beitrag: 19.11.05, 16:58
  3. Smileys
    Von tittli im Forum PHP
    Antworten: 12
    Letzter Beitrag: 11.11.04, 16:15
  4. Smileys im GB
    Von webchillr im Forum PHP
    Antworten: 10
    Letzter Beitrag: 20.05.02, 13:19