2010-12-16 3 views
0

Ich habe ein Formular, das einen Cookie-Wert zu einem versteckten Eingabefeld aus Gründen der Berichterstattung ausgibt. Der Cookie ist einfach die Login-E-Mail-Adresse, die mit der Website verknüpft ist. Manchmal wird die E-Mail beim Absenden des Formulars zweimal im Eingabefeld angezeigt, was Probleme mit der Berichterstellungssoftware verursacht.PHP Strip/Trim/Explode, um alles nach einer bestimmten Phrase zu entfernen

Ich dachte, ich könnte nur die Zeichenfolge verarbeiten, bevor es in das Eingabefeld ausgegeben wird, doppelte Vorkommen eines Wortes zu entfernen oder alles nach dem .org unserer Domäne entfernen (das Formular ist intern, so wird es immer "unsereDomain. org "). Ich habe mehrere Ansätze ausprobiert, aber keine der Möglichkeiten, die ich mir vorgestellt habe, hat funktioniert. Eine einfache Zeichenanzahl ist aufgrund der unterschiedlichen E-Mail-Adresslängen nicht möglich. Wenn die E-Mail zweimal angezeigt wird, ist kein Leerzeichen zwischen ihnen vorhanden, sodass das Auflösen eines leeren Speicherplatzes nicht funktioniert. Ich habe das meiste des PHP-Handbuchs gelesen, das mit der String-Verarbeitung zu tun hat, und ich kann nicht herausfinden, wie man etwas nach einem Ausdruck wie ".org" entfernt, während man immer noch ".org" behält.

+1

Der Browser sendet das Cookie trotzdem als HTTP-Header. Warum nimmst du es nicht von dort und benutzt es für die Berichterstattung - was ist es, es in ein verstecktes Feld zu setzen? – Tomalak

+0

Wir verwenden ein PHP-Formular, das den Inhalt unseres Formulars an eine Helpdesk-Software-E-Mail sendet, die dann die richtigen Werte aus den versteckten Formularen zuweist. –

Antwort

0

Dies sollte funktionieren.

<?php 
$example="example.orgexample.org"; 
$example=substr($example,0,stripos($example,'.org')+4); 
?> 

Das wird alles nach dem ersten .org es findet zu entfernen.

+0

Es funktioniert jetzt voll, ich schätze die Hilfe. Könntest du anderen und mir die volle Funktion und die Logik dahinter erklären? –

+0

substr erstellt nur eine Teilzeichenfolge der Zeichenfolge. Also, wenn Sie es übergeben 0 (Anfang der Zeichenfolge) und stripos ($ Beispiel, '. org') + 4 (die Position des ersten Vorkommens der Zeichenfolge '.org' case insensative plus 4 Zeichen (die Länge von '. org ')) wird es den Rest der Schnur abschneiden. – MrTippet

2

Anstatt zu versuchen, den Wert in der Box zu analysieren, sollten Sie nicht versuchen, das eigentliche Problem zu beheben, was ist die Tatsache, dass es etwas in dieser Box gibt, die nicht dorthin gehört?

+0

Ich arbeite daran, aber bis ich das Problem lösen kann, muss ich das Problem beheben. Die Berichtssoftware benötigt die richtigen Werte und ich kann nicht zulassen, dass sich die Doppelgänger stapeln, während ich das Problem recherchiere. –

0

Versuchen Sie strtstr() wie in strstr ($ sring, '.org', wahr), aber es ist am besten herauszufinden, warum die E-Mail in der Box wiederholt wird, zuerst.

Hinweis: Ich denke strstr() funktioniert nur mit PHP 5.3 und höher. stristr() für Groß- und Kleinschreibung.

Verwandte Themen