Script generierte Html-Emails

  • hallo liebe community,
    ich hab da ein kleines Problem bei meinen Script.
    Das Script generierte Html-Emails und diese werden auch versandt, aber im POP-Postfach wird nur der htmlcode dargestellt. beim imap-Postfach wird die hmtlmail korrekt dargestellt.


    es ist die eine und die selbe Mailadresse, hab sie jeweils einmal unter pop und einmal unter imap bei thunderbird3 eingestellt. Leider wird die Mail per pop nur html angezeigt..ich weiß nicht woran es liegt. hat jemand eine Idee?


    gruß shop

  • 07:20 Da bin ich im Tiefschlaf ! ;)


    Hab jetzt ein anderes Problem! mit einem anderen script das ich heute angefangen habe. Es ist ziehmlich klein und macht folgendes: zieht sich wörter aus einer tabelle (mysql) und sucht nach dem wort in einem text.
    Das versuch ich mit der Funktion:

    Zitat

    echo preg_replace($suchmuster, $ersetzungen, $zeichenkette)


    Leider bekomme ich dauernd den Fehler.

    Zitat

    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'P'



    Was ist dran falsch?

  • Hmm, ich würed nach dem $keyword = '/'.$lexikon['keyword'].'/'; noch ein "i" machen:

    PHP
    1. $keyword = '/'.$lexikon['keyword'].'/i';


    Das echo kann so nicht gehen. Was ist denn Zeichenkette? Wo wird die gefüllt?

  • Erstmal hab ich irgendwas in die $zeichenkette geschrieben, später soll sie eigentlich jeweils die Produktbeschreibung bekommen, welche dann vor dem anzeigen im Shop nach keywords durchsucht wird und bei einem Fund durch einen Link zu der Erklärung bzw. Kategorie gelinkt wird.


    PHP
    1. $zeichenkette ="Tee Banane Saft Apfel Tonne Kilo Dorf Baum Sand Strand Meer Luft Erdbeere Mappe Tisch Auge Senf";


    Welche Bedeutung hat das "i" ?


    Wie soll man sich sonst das "Ergebnis" von preg_replace(); anschauen? Das echo funktioniert.



    Momentan schauts so aus, aber das ist ja nicht das was angestrebt wird.


    Mir ist aufgefallen, dass der Funktion preg_replace(); das hier:
    $keyword[i] = '/'.$lexikon['keyword'].'/i';
    überhaupt nicht gefällt! Und den Fehler ausspuckt:

    Zitat

    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'P' in /var/www/web277/html/muskelaufbau-shop/admin/includes/oldcenturyproduction/stringz.php on line 56


    Mit:
    $keyword[i]='/Banane/i';
    gehts ohne Probleme!

  • Dann würde ich mal darauf tippen das ein Keyword irgendwas mit /P oder \P ist. Das ist nämlich schon wieder ein Befehl für die preg_replace Funktion.

  • Du kannst das "\" entschärfen. Wenn die Keywords für Kunden nicht sichtbar sind. Lege das Pärchen so an:

    PHP
    1. $keyword[i]='/Eiweiß \/ Protein/i';


    Der Backslash für dem Schrägstrich hebt einen eventuellen Befehl auf.

  • Werde ich mir merken! :) In Moment habe ich es so gelöst, Eiweiß zu Protein verlinkt. Der "Vorteil" ist: es wird nicht nach dem Wort "Eiweiß \ Protein" gesucht, sondern jeweils jedes Wort einzeln -> Es gibt einen direkten Link zu der Beschreibung. Außerdem schreibt kein Hersteller Eiweiß \ Protein in die Produktbeschreibung ^^

  • hallo,
    ich muss wohl das Thema suchen&ersetzten neu aufrollen.


    PHP
    1. preg_replace($keyword, $link, $zeichenkette);


    Diese Funktion bekommt ein Wort ($keyword) z.b. "Protein", welches in der Produktbeschreibung ($zeichenkette) es finden soll und gegebenenfalls gegen denk Link ($link) ersetzten soll.


    Schön und gut, es funktioniert soweit alles problemlos. Jetzt kommt der Hacken.
    Manche Produktbeschreibungen haben schon Links im Text oder Bilder. Die Tags title, alt oder URL enthalten auch manche der Wörter, welche ersetzt werden sollen.


    Beispiel:

    HTML
    1. text...<p style="text-align: center;"><img title="PointFit Protein Shake 85 Promotion" alt="PointFit Protein Shake 85 Promotion" src="http://www.shop-muskelaufbau.de//produkt-images/pointfit-protein-shake-85-banner.jpg"></p>...text


    Ich hab schon versucht irgendwie die Tags inklusive Inhalt ab "<" bis ">" von der suche auszuschließen, leider hat bei mir nichts geklappt und das googlen danach brachte mich auch nicht weiter.


    habt ihr eine Idee wie man diese Aufgabe bewältigen kann?


    freundlichen Gruß
    shop

  • Das ist nicht so einfach. Reguläre Ausdrücke sind in meinen Augen fast schon eine hohe Kunst. Ich muss mich da jedes mal auf's neue reinfuchsen.


    Hier was zum probieren:
    http://www.regex-tester.de/regex.html


    Auf jeden fall müsste das etwa so aussehen:

    Code
    1. (?<=^|>)[^><]+?(?=<|$)


    ... alles was nicht in HTML-Tags steht. So ungefähr ;). Kannste aber mit dem regTester durchspielen.


    Hier ist mein Favorit:
    http://gskinner.com/RegExr/