php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.09.2004, 03:51  
Gast
 
Beiträge: n/a
Standard Mit PHP einen in ein Textfeld eingefügten Text aufsplitten??

Hi zusammen. Ich beginne zzt damit PHP zu lernen. Weil ich etwas brauche was es scheinbar noch nicht gibt.

Und zwar will ich ein PHP "Interface" erstellen indem ich einen kopierten Text einfüge und der dann aus diesem Text einzelne Daten "erkennt" und als Datensätze abspeichert. Allerdings Frage ich mich ob das mit PHP überhaupt geht Und wenn es geht... wie geht sowas? ^^

Also hier mal ein konkretes Beispiel:

der kopierte Text:
Zitat:
Sonnensystem 2:381
Planet Name Aktion
1
2 [G.IceS] John-Land Kolonie 1 ( JohnySIS )
3
4 T [HoE] USMC Main Base ( Christian1980 )
5 [G.IceS] Johnorama ( JohnySIS )
6 [dop] letmegowild ( ludmilla )
7 Harlem Kolonie ( B I G(i) )
8 RVD ( Rob Van Dan(iI) )
9 T [p M] Quyl Isha ( Cama(i) )
10 [HFK] PennyMarkt ( Dr Z )
11 [G.IceS] Systemofa John Kolo7 ( JohnySIS )
12 [Vnog] Style5 ( Fiedler )
13
14 [CUBE] Mezelbude ( verbatim )
15 [G.IceS] Kolonie ( JohnySIS )
Das ist eine Galaxyübersicht aus dem Browserspiel www.ogame.de. oben Steht die Galaxy und das System (gibt immer 9 Galaxien und in jeder Galaxy 499 Systeme)

also in diesem Fall Galaxy 2 System 381

In diesen Systemen sind bis zu 15 Planeten.
dadurch ergeben sich dann koordinaten also z.b. 2:381:1 für den ersten Planeten im 381 System der 2ten Galaxy.

Was ich nun möchte ist das PHP aus dieser Kope einzelne Datensätze erstellt die folgende Inhalte haben:

Koordinate: (z.B. "2:381:1")
Alliany = (z.b. "[HoE]")
Planetenname : (z.b. "USMC Mainbase")
Spieler : (z.b. "(Christian1980)")

Wie man vielleicht sieht sind die elemente Spieler und Allianz einmal durch [] bzw. () gekennzeichnet.

Meine Frage ist also. Wie kann ich gezielt Teile aus einem String suchen und in eine Variable einlesen?

also z.b. Nimm den teil zwischen "sonnensystem" und "Planet" und speicher ihn in der variablen $Koordinate
oder den wert zwischen "1[" und "]" als $allianz
oder zwischen "]" und "(" als $planet

gibt es eine funtion für soetwas?

Ich wette ich will schon wieder mal zuviel wissen *G* aber ich frag einfach mal.

P.S. Ich habs unter Anfänger gepostet da ich ja einer bin. Könnte allerdings sein das die Sache ansich wohl eher nen Fortgeschrittenen oder Profi erfordert was die Lösung angeht ^^ also net böse sein... wusste net wohin mit dem Post.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.09.2004, 09:02  
Gast
 
Beiträge: n/a
Standard

als kleiner Gedanken Ansatz:
preg_replace -> eval

bsp.:

PHP-Code:
<?php

$string 
'[G.IceS] John-Land Kolonie 1 ( JohnySIS )';

$str preg_replace("/(\[)(.*)(\])(.*)(\(.*\))/siU""\$x1=\"\\2\";\$x2=\"\\4\";\$x3=\"\\5\";"$string);
eval(
$str);
echo 
$x1.'
'
.$x2.'
'
.$x3;

?>
[edit]
das Anfängerforum ist schon das richtige


mfg
 
Alt 11.09.2004, 10:32  
Gast
 
Beiträge: n/a
Standard

*gerade die infos über preg_replace und eval durchliest*

hum... ok... teilweise gehts in die richtige richtung. aber der string ist ja nicht nur eine zeile. der string ist alles was oben im quote steht. es gibt leere planetn die ignoriert werden sollen und es gibt welche die nicht leer sind. funktioniert preg_replace dann immer noch?

btw... ich glaub du hast dich vertippst:

Zitat:
<?php

$string = '[G.IceS] John-Land Kolonie 1 ( JohnySIS )';

$str = preg_replace("/(\[)(.*)(\])(.*)(\()(.*)(\))/siU", "\$x1=\"\\2\";\$x2=\"\\4\";\$x3=\"\\6\";", $string);
eval($str);
echo $x1.'
'.$x2.'
'.$x3;

?>
Du hattest vergessen die klammern "(" und ")" nochmal zu schliessen dadurch wurde der Name mit () ausgegeben. also (JohnnySIS) anstatt nur JohnnySIS.

Also ersetzt du den Text so das du teile des Textes variablen namen hinzufügst und abschlusszeichen. die dann wiederum durch eval zu richtigen variablen werden mit denen mann arbeiten kann, richtig?

^^ leider verstehe ich den aufbau von preg_replace noch immer nicht soganz. Also schon das erst der suchteil, ersetzteil, string dass schon. aber halt net wie der suchteil und der ersetzteil ansich aufgebaut sind und wieso.

Auch nach dem lesen von http://de2.php.net/manual/de/function.preg-replace.php.

also mir fehlt das wissen wieso //1 und son kram... ^^


Nachtrag
Hum. Es müsste ansich gehen wenn ich es mit einer 2 fachen funktion mache. also quasi:

nimm alles was zwischen 1 und 2, 2und 3, 4 und 5 usw steht und schreibe es in variable 1-15

also quasi aus dem grossen string 15 kleine machen.
und die dann wiederum so zerlege wie du es getan hast. Aber das gibt probleme wenn zahlen in dnen namen der personen, allianzen oder planetennamen vorkommen richtig?

(und ich weiss immernochnet wie ich das umsetzte im suchparameter *G*)[/b]
 
Alt 11.09.2004, 13:50  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

PHP-Code:
<?php 
$_POST
['string'] = 
'Sonnensystem 2:381 
Planet Name Aktion 

2 [G.IceS] John-Land Kolonie 1 ( JohnySIS ) 

4 T [HoE] USMC Main Base ( Christian1980 ) 
5 [G.IceS] Johnorama ( JohnySIS ) 
6 [dop] letmegowild ( ludmilla ) 
7 Harlem Kolonie ( B I G(i) ) 
8 RVD ( Rob Van Dan(iI) ) 
9 T [p M] Quyl Isha ( Cama(i) ) 
10 [HFK] PennyMarkt ( Dr Z ) 
11 [G.IceS] Systemofa John Kolo7 ( JohnySIS ) 
12 [Vnog] Style5 ( Fiedler ) 
13 
14 [CUBE] Mezelbude ( verbatim ) 
15 [G.IceS] Kolonie ( JohnySIS ) '
;

$pcre 
'=
^
(\d+)
\s
[^\d[]*
\[
([^]]*)
\]
\s
([^(]*)
\s
\(
\s
([^)]*)
\s
\)
\s*
$
=xm'
;

preg_match_all($pcre$_POST['string'], $matchPREG_SET_ORDER); 

?>
... und jetzt schau Dir mal $match an.
tapferesschneiderlein ist offline  
Alt 11.09.2004, 14:04  
Gast
 
Beiträge: n/a
Standard

*gerade vom chinesen zurück is*

So hab den Code einfach mal in ne PHP Datei kopiert und aufm Apache Server gelegt.

Und den Befehl
echo $match;
und
echo $match[0];

hinzugefügt. Kommt aber immer nur "Array" als antwort. Mach ich Depp da schon wieder was falsch?

^^
 
Alt 11.09.2004, 14:25  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

PHP-Code:
print_r($match);
// bzw.
print_r($match[0]);
// bzw. z. B.
echo $match[0][1]; 
tapferesschneiderlein ist offline  
Alt 11.09.2004, 20:24  
Gast
 
Beiträge: n/a
Standard

ok... bin beeindruckt ^^

am besten gefällt mir die:
echo $match[0][1];
variante.

Also im endeffekt ist es ja schon genau das was ich brauche. er lässt leere Planeten aus aber nimmt alle anderen und ich kann quasi alle daten einzeln auslesen. (muss nun nur noch galaxy und system auslesen ^^)

Aber dennoch "verstehe" ich den syntax noch nicht. Und das würde ich gerne. Wenn sich also einer erbarmen könnte ihn mir zu erläutern wäre ich wirklich dankbar

Weil wie heisst es so schön.
Gib einem Menschen was zu essen und er ist satt. Aber lehre ihn zu Jagen und er wird nie wieder Hunger leiden.

Speziell den Teil hier:
Zitat:
$pcre =
'=
^
(\d+)
\s
[^\d[]*
\[
([^]]*)
\]
\s
([^(]*)
\s
\(
\s
([^)]*)
\s
\)
\s*
$
=xm';
 
Alt 11.09.2004, 20:47  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Code:
$pcre = 
'
=       # Das »=« am Anfang und Ende sind die Delimiter und 
        # markieren Anfang und Ende des Suchmusters
        # (das kann auch jedes andere nicht alpha-num.
        # Zeichen sein, das nicht im Muster vorkommt

^       # Der String soll (jeweils, siehe »m«) hiermit beginnen
(\d+)   # erste zu findende Gruppe (): mind. eine Ziffer
\s      # ein Whitespace
[^\d[]* # mind. 0 Zeichen, die keine Ziffer oder [ sind
\[      # die Klammer [
([^]]*) # zweite Gruppe: mind. 0 Zeichen, die nicht ] sind
\]      # die Klammer ]
\s      # das Leerzeichen
([^(]*) # dritte Gruppe: mind. 0 Zeichen, die nicht ( sind
\s      # Leerz.
\(      # Klammer
\s      # Leerz.
([^)]*) # vierte Gruppe: mind. 0 Zeichen, die nicht ) sind
\s      # Leerz.
\)      # Klammer zu
\s*     # mind. 0 Leerzeichen
$       # damit soll der String (jeweils) enden
=xm     # der Delimiter (s. o.) und die Modifier:
        # »x« für extended, damit ich das hier so schön mit
        #     Umbrüchen und Kommentaren schreiben kann,
        # »m« für Multiline-Modus, bei dem er jede Zeile einzeln
        # mit ^ und $ prüft
';
www.php.net/pcre ... Weidmanns Heil! (Und als nächstes möchte ich von Dir den PCRE für das Sonnensystem sehen )
tapferesschneiderlein ist offline  
Alt 12.09.2004, 00:01  
Gast
 
Beiträge: n/a
Standard

hehe ok ich werd mich später dran setzten und morgenfrüh meinen versuch posten *G* nu wird erstmal Warcraft im netzwerk gezockt *G*
 
Alt 12.09.2004, 14:01  
Gast
 
Beiträge: n/a
Standard

So hab mich mal dran versucht.
So ganz Firm bin ich allerdings noch nicht.

Aber zumindest funktioniert es:

Zitat:
<?php
$_POST['string'] =
'Sonnensystem 2:381
Planet Name Aktion
1
2 [G.IceS] John-Land Kolonie 1 ( JohnySIS )
3
4 T [HoE] USMC Main Base ( Christian1980 )
5 [G.IceS] Johnorama ( JohnySIS )
6 [dop] letmegowild ( ludmilla )
7 Harlem Kolonie ( B I G(i) )
8 RVD ( Rob Van Dan(iI) )
9 T [p M] Quyl Isha ( Cama(i) )
10 [HFK] PennyMarkt ( Dr Z )
11 [G.IceS] Systemofa John Kolo7 ( JohnySIS )
12 [Vnog] Style5 ( Fiedler )
13
14 [CUBE] Mezelbude ( verbatim )
15 [G.IceS] Kolonie ( JohnySIS ) ';

$pcre =
'=
(\d{1})
:
(\d{1,3})
=xm';


preg_match_all($pcre, $_POST['string'], $match, PREG_SET_ORDER);

echo "Galaxy = " .$match[0][1];
echo "
";
echo "System = " .$match[0][2];
?>
Sicherer wäre ggf diese Variante da Sonnensystem ja auf jedenfall nur einmal vorkommt:
Zitat:
$pcre =
'=
Sonnensystem
\s+
(\d{1})
:
(\d{1,3})
=xm';
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
Text aus Textfeld in MySql schreiben Blu3Dr@gOn PHP Tipps 2007 2 18.05.2007 11:32
Varibable in Bilder und Text aufsplitten PHP Tipps 2006 4 30.01.2006 00:12
CSS - Design (clear - Problem) HTML, Usability und Barrierefreiheit 7 21.12.2005 14:55
Text aus der DB verteilen PHP Tipps 2007 17 16.11.2005 12:04
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
[Erledigt] DIV´s wollen nicht wie ich das will :-) HTML, Usability und Barrierefreiheit 22 28.03.2005 18:36
text in ein textfeld beim markieren kopieren felicitas HTML, Usability und Barrierefreiheit 3 10.02.2005 11:26
Text aus Textfeld in Variable speichern Connar PHP Tipps 2005 7 22.01.2005 14:13
frames probleme HTML, Usability und Barrierefreiheit 6 18.01.2005 02:33
[Erledigt] Auslesen von Text incl. &quot; aus Textfeld PHP Tipps 2007 4 04.01.2005 13:30
[b]text automatisch bei submit in textfeld einfügen[/b] PHP Tipps 2004-2 10 05.12.2004 13:44
Einen Text im textfeld umändern? Wie geht das????? 'progman' PHP Tipps 2004 18 22.10.2004 16:28
txt-Datei erstellen d-81 PHP Tipps 2004 12 11.08.2004 20:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php alle buchstaben aus textbox einzeln auslesen, x3 planetennamen, textfeld mit eingefügten wert php, css mezelbude.com

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.