php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 26-11-2008, 13:22
roNn
 Member
Links : Onlinestatus : roNn ist offline
Registriert seit: Oct 2003
Ort: /home/bw
Beiträge: 245
roNn ist zur Zeit noch ein unbeschriebenes Blatt
roNn eine Nachricht über ICQ schicken
Standard [REGEX] bestimmte zeichenkette auslesen

Hallo =)

Ich verzweifle, bitte erbarme sich jmd. mir zu helfen! Aus einem Textfeld kommen die Daten in Form: [bla:foo]. Und auf jeder Zeile ein weiteres [foo:bla]..

Soo jetzt würde ich gerne ein Array erstellen ala "bla" -> "foo"..
aber ich scheiter schon am regex, ich verstehe einfach nicht warum es nicht geht:

PHP-Code:
preg_match('/\[(.*)\:/im'$_POST['textarea'], $a); 
Das müsste doch jetzt eigentlich nach allem suchen was von "[" und ":" eingeschlossen ist und es dann in $a schreiben..

vielen dank schonmal!
Mit Zitat antworten
  #2 (permalink)  
Alt 26-11-2008, 13:37
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.724
Kropff befindet sich auf einem aufstrebenden Ast
Standard

mit [ werden normalerweise charakterklassen definiert. also musst du die escapen.
Code:
preg_match('/\[(.*):/im', $_POST['textarea'], $a);
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 26-11-2008, 13:42
roNn
 Member
Links : Onlinestatus : roNn ist offline
Registriert seit: Oct 2003
Ort: /home/bw
Beiträge: 245
roNn ist zur Zeit noch ein unbeschriebenes Blatt
roNn eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Kropff
mit [ werden normalerweise charakterklassen definiert. also musst du die escapen.
Danke für die schnelle Antwort! Die eckigen Klammern sind bei mir escaped, hat wohl das Forum rausgehauen - die Slashes:

PHP-Code:
preg_match('/\\[(.*)\:/im'$_POST['textarea'], $a); 
funkt leider nicht

Herauskommt (bei [bar:foo]):
Code:
Array ( 
[0] => [bar: 
[1] => bar )
Mit Zitat antworten
  #4 (permalink)  
Alt 26-11-2008, 13:49
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.724
Kropff befindet sich auf einem aufstrebenden Ast
Standard

funzt wunderbar. das ist genau das, was dein regexp bezweckt. zum thema klammern solltest du ggf. das hier lesen.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 26-11-2008, 14:35
roNn
 Member
Links : Onlinestatus : roNn ist offline
Registriert seit: Oct 2003
Ort: /home/bw
Beiträge: 245
roNn ist zur Zeit noch ein unbeschriebenes Blatt
roNn eine Nachricht über ICQ schicken
Standard

Vielen Dank! Hab bei Dir auf der Seite schon viel gelernt, dafür auch gleich noch ein Danke =)

Ich versuche nun die ganze Schoße als asso. Array abzuspeichern:
PHP-Code:
preg_match_all('#\\[(.+):#Umi'$_POST['sonstinfo'], $key);
preg_match_all('#\:\(.+)\\]#Umi'$_POST['sonstinfo'], $value);
            
foreach (
$key[1] as $a => $b)
{
      foreach (
$value[1] as $c => $d)
      {
           
$bla[$b] = $d;
      }

Wenn ich im Textfeld [bar:foo][test:lol] stehen habe kommt leider folgendes raus:
Code:
Array ( 
           [bar] => lol 
           [test] => lol 
          )
Irgendwie klappt das mit dem 2. foreach nicht =( Hat jmd. ne Idee?

Geändert von roNn (26-11-2008 um 14:38 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 26-11-2008, 14:47
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.724
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Code:
preg_match_all('#\[(.+): (.+)\]#Umi', $_POST['sonstinfo'], $hit, PREG_SET_ORDER);
(musste zwischen ": (" leerzeichen setzen, da sonst ein smile auftaucht)

schau dir das mal an. da sparst du dir eine schleife. [0] ist der gesamtausdruck, [1] dein key und [2] dein value.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite

Geändert von Kropff (26-11-2008 um 14:50 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 26-11-2008, 15:19
roNn
 Member
Links : Onlinestatus : roNn ist offline
Registriert seit: Oct 2003
Ort: /home/bw
Beiträge: 245
roNn ist zur Zeit noch ein unbeschriebenes Blatt
roNn eine Nachricht über ICQ schicken
Standard

Danke, das ist genial und es funktioniert auch, aber ich habe immer noch 2 Arrays die ich durchlaufen muss?

Code:
 
Array ( 
	[0] => Array ( 
			[0] => [bar:foo] 
			[1] => bar 
			[2] => foo 
                                     ) 
	[1] => Array ( 
			[0] => [test:lol] 
			[1] => test 
			[2] => lol 
                                     ) 
         )
Ich steh grad richtig auf dem Schlauch


PHP-Code:
foreach ($hit as $a => $b)
{
    foreach (
$hit[$a] as $key => $value)    
    {
        if (
$key == 1)
        {
            
$array .= $value;
        }
    }

Ich brauch das aber als asso. Array.. Also $array[bar] = "foo" und $array[test] = "lol" ...

ich bekomm es einfach nicht hin =(
Mit Zitat antworten
  #8 (permalink)  
Alt 26-11-2008, 15:55
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.724
Kropff befindet sich auf einem aufstrebenden Ast
Standard

warum so kompliziert?
PHP-Code:
for ($i 0$i count($hit); $i++)
{
  
$key $hit[$i][1];
  
$value $hit[$i][2];
  
$array[$key] = $value;

aber immer $key und $value überprüfen.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 26-11-2008, 16:49
roNn
 Member
Links : Onlinestatus : roNn ist offline
Registriert seit: Oct 2003
Ort: /home/bw
Beiträge: 245
roNn ist zur Zeit noch ein unbeschriebenes Blatt
roNn eine Nachricht über ICQ schicken
Standard

Danke! Ja ich dachte mir schon das es alles ein wenig kompliziert wird..
Bin nicht auf die for-Schleife gekommen, war irgendwie auf die foreach fixiert. Jetzt läuft es, herzlichen dank =)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

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