Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PHP5: Feldeingabe aufsplitten
freaked Offline
× ∫яεαкεδ εησυġн × ζιgнтѕтαя ×

Beiträge: 17.046
Registriert seit: Jul 2008
Beitrag #1
PHP5: Feldeingabe aufsplitten
mal angenommen ein private nachrichten system
ich hätte gerne die möglichkeit gehabt, ne nachricht an mehrere empfänger zu senden. als trennzeichen würde ich strichpunkt oder beistrich akzeptieren. oder meinetwegen einfach ein leerzeichen. wie erkenne ich das mit php?

"benutzer1 benutzer2"
"benutzer1; benutzer2"
"benutzer1;benutzer2"
"benutzer1,benutzer2"
"benutzer1; bentzer2,benutzer3"

sollten alle erkannt werden

ich hab das derzeit so, dass ich die eine feldeingabe durch die datenbank grasen lasse. bei einer übereinstimmung krall ich mir die userid vom empfänger und speichere den beitrag mit empfuid in der datenbank. die pm-index seite gibt dann einfach "where empfuid=" aus.

ich denke mal da wird man ein array nutzen müssen? ich hab die irgendwie nie verstanden öö

(Dieser Beitrag wurde zuletzt bearbeitet: 24.12.2014 12:54 von freaked.)
24.12.2014 12:54
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #2
RE: PHP5: Feldeingabe aufsplitten
Mit explode()

PHP-Code:
$aufgesplittet=explode("trennzeichen",$original); 

Beispielsweise
PHP-Code:
$aufgesplittet=explode(";",$original); 

Du hast dann in $aufgesplittet ein Array mit den einzelnen Teilen die durch das Trennzeichen getrennt sind.

Das kannst du noch mit foreach kombinieren und so nach und nach verarbeiten:
PHP-Code:
echo "<ul>";
foreach(
$aufgesplittet as $eintrag)
{
    echo 
"<li>$eintrag</li>";
}
echo 
"</ul>"
In diesem Beispiel einfach als HTML-Liste ausgegeben.
24.12.2014 13:01
Diese Nachricht in einer Antwort zitieren
freaked Offline
× ∫яεαкεδ εησυġн × ζιgнтѕтαя ×

Beiträge: 17.046
Registriert seit: Jul 2008
Beitrag #3
RE: PHP5: Feldeingabe aufsplitten
okay. filtert das ding dann aber auch leerzeichen raus?
sonst würde ja "benutzer1; benutzer2" nur "benutzer1" als richtig anerkennen - "benutzer2" würde als " benutzer2" erkannt werden

24.12.2014 13:02
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #4
RE: PHP5: Feldeingabe aufsplitten
(24.12.2014 13:02)freaked schrieb:  okay. filtert das ding dann aber auch leerzeichen raus?
sonst würde ja "benutzer1; benutzer2" nur "benutzer1" als richtig anerkennen - "benutzer2" würde als " benutzer2" erkannt werden
Ich würde dir raten, das Leerzeichen einfach wegzulassen. Der wird halt beim Trennzeichen splitten.
24.12.2014 13:04
Diese Nachricht in einer Antwort zitieren
freaked Offline
× ∫яεαкεδ εησυġн × ζιgнтѕтαя ×

Beiträge: 17.046
Registriert seit: Jul 2008
Beitrag #5
RE: PHP5: Feldeingabe aufsplitten
naja. ich kanns mir schon leicht machen und leerzeichen sein lassen. aber ein typischer anwender machts mal so, mal so.

24.12.2014 13:04
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #6
RE: PHP5: Feldeingabe aufsplitten
(24.12.2014 13:02)freaked schrieb:  okay. filtert das ding dann aber auch leerzeichen raus?
sonst würde ja "benutzer1; benutzer2" nur "benutzer1" als richtig anerkennen - "benutzer2" würde als " benutzer2" erkannt werden
Du kannst die Strings ja anschließend noch weiter verarbeiten in PHP und etwa Leerzeichen am Anfang des Strings entfernen. Dafür gibt es die Funktion trim:
http://php.net/manual/de/function.trim.php
24.12.2014 13:06
Diese Nachricht in einer Antwort zitieren
winfreak Offline
アンゲシュテルタ

Beiträge: 10.495
Registriert seit: Aug 2008
Beitrag #7
RE: PHP5: Feldeingabe aufsplitten
(24.12.2014 13:02)freaked schrieb:  okay. filtert das ding dann aber auch leerzeichen raus?
sonst würde ja "benutzer1; benutzer2" nur "benutzer1" als richtig anerkennen - "benutzer2" würde als " benutzer2" erkannt werden

Ich würde das so machen:
PHP-Code:
<?php
     $original 
mysql_real_escape_string($_POST['empfaenger']); //Empfange die Empfängerliste aus dem Formular
     
$empfaenger explode(';'str_replace(' '''$original)); //Entferne alle Leerzeichen, egal wo im String und trenne in einen Array mit Trennzeichen ";". 

Die Gegenfunktion zu explode() ist übrigens implode(), mit dem die aus einem Array wieder einen String machen kannst, Trennzeichen für die einzelnen Werte wird dann von die festgelegt.

[Bild: winfreak_32972_14.png]
(Dieser Beitrag wurde zuletzt bearbeitet: 24.12.2014 13:15 von winfreak.)
24.12.2014 13:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Online
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #8
RE: PHP5: Feldeingabe aufsplitten
PHP-Code:
$array_ohne_leerzeichen array_map('trim'explode(';'$str)); 

Macht aus dem String "Benutzer 1; Benutzer 2" das Array ["Benutzer 1", "Benutzer 2"].

(Im Kontrast zu winfreaks Lösung, die ["Benutzer1", Benutzer2"] macht)
(Dieser Beitrag wurde zuletzt bearbeitet: 24.12.2014 14:42 von gandro.)
24.12.2014 14:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
winfreak Offline
アンゲシュテルタ

Beiträge: 10.495
Registriert seit: Aug 2008
Beitrag #9
RE: PHP5: Feldeingabe aufsplitten
Nice =)

[Bild: winfreak_32972_14.png]
24.12.2014 14:35
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
freaked Offline
× ∫яεαкεδ εησυġн × ζιgнтѕтαя ×

Beiträge: 17.046
Registriert seit: Jul 2008
Beitrag #10
RE: PHP5: Feldeingabe aufsplitten
funktioniert prima. danke leute!

andere frage: ich nutze seit ewig folgendes für [ quote] [ /quote] und [ quote=xxx]

PHP-Code:
$text preg_replace("/\[quote\](.*?)\[\/quote\]/si","<div style=\"padding:4px;vertical-align:middle;text-align:left;width:700px;color:#FFFFFF;background-color:$bgcolor;margin:0px auto;\"><b>Zitat:</b></div><div style=\"padding:4px;vertical-align:middle;background-color:#E7E7E7;text-align:left;width:700px;color:#000000;margin:0px auto;\">\\1</font></div>"$text);
$text preg_replace("/\[quote=(.*?)\](.*?)\[\/quote\]/si""<div style=\"padding:4px;vertical-align:middle;text-align:left;width:700px;color:#FFFFFF;background-color:$bgcolor;margin:0px auto;\"><b>Zitat von \\1:</b></div><div style=\"padding:4px;vertical-align:middle;background-color:#E7E7E7;text-align:left;width:700px;color:#000000;margin:0px auto;\">\\2</font></div>"$text); 

jetzt fällt mir aber zum ersten mal auf, dass wenn es mehrere quotes bei ner weiterleitung gibt
z.b.

Code:
[quote=freaked]

[quote=tester]
Nachricht 1!
[/quote]

Nachricht 2!

[/quote]

Nachricht 3!

was sich hier im WHF schön verschachtelt bei mir zu dem problem führt, dass nur das erste [quote ] und das erste [ /quote] erkannt wird. daher nur quote=freaked von nachricht 2 wird umgeändert, jedoch auch nur [ /quote] von nachricht 1..

also ein failing auf ganzer linie

[Bild: unbenannt.4603.png]

hat jemand einen ersatz?

(Dieser Beitrag wurde zuletzt bearbeitet: 24.12.2014 14:45 von freaked.)
24.12.2014 14:45
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste