php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.02.2009, 18:39  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 5
Spoiler befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] preg_match und die Pattern

Moin,

ich hoffe, ihr könnt mir helfen.

Es geht um das leidige Thema preg_match und die entsprechenden Pattern.
Nachdem ich jetzt schon 2 Stunden lang google gequält habe, bin ich am Ende mit meinem Latein.

Folgenden Ausdruck möchte ich gerne suchen:

"Text1":"Text2"

Ok, mein String sieht noch etwas länger aus:
{"Text1":"Text2","Text3":"Text4","Text5":"Text6"," Text7":"Text8"}

Was ich konkret machen will:

Ich möchte mit preg_match_all ein Array aufbauen, das etwa so aussieht:

[0]
*[0] => Text1
*[1] => Text2
[1]
*[0] => Text3
*[1] => Text4
[2]
*[0] => Text5
*[1] => Text6
[3]
*[0] => Text7
*[1] => Text8

Ich denke, das Prinzip ist klar.

Kann mir jemand bitte das entsprechende Pattern zusammenbauen??

Vielen Dank im Voraus.

Gruß

Spoiler
Spoiler ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.02.2009, 19:12  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Bist du wieder am erfinden einer neuen Formatsprache? Das sieht schon sehr nach JSON aus, schau dir mal

$array = json_decode('{"Text1":"Text2","Text3":"Text4","Tex t5":"Text6"," Text7":"Text8"}', true);
print_r($array)

an.
Chriz ist offline  
Alt 11.02.2009, 19:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Kann mir jemand bitte das entsprechende Pattern zusammenbauen??
Zeig Deine Ansätze, wir sind hier nicht die Wohlfahrt. Und, ja, es geht ums Prinzip!

Tipp: PREG_SET_ORDER
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 11.02.2009, 21:29  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

[MOD] Verschoben nach Einsteiger.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.02.2009, 08:38  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 5
Spoiler befindet sich auf einem aufstrebenden Ast
Standard

Moin,

ja, es geht quasi um JSON ... allerdings liefert das mit UTF-8 und das geht mal bei mir krass schief.
Also möchte ich den decode selbst schreiben, sodaß der mit den Daten funktioniert, die ich übertrage.

Jetzt bitte keine Diskussion vom Zaun brechen, warum ich kein UTF-8 einsetze: es geht zum jetzigen Zeitpunkt nicht.

Das reguläre Ausdrücke in den Bereich der Einsteiger zählen, war mir bis jetzt unbekannt ... hätte das für Fortgeschritten gehalten

Nicht die Wohlfahrt??
Naja, meinet wegen ...

Meine Ansätze:

Code:
[".*"]:[".*"] => geht nicht
([".*"]):([".*"]) => geht nicht
([".*"])(:)([".*"]) => geht nicht
(".*"):(".*") => geht nicht
/^(".*"):(".*"),?/im => geht nicht
/(".*")/im => geht auch nicht
Ich kann die Liste nach unten noch beliebig fortsetzen ... man kommt in 2 Stunden schon ziemlich weit und auf krasse Ideen, aber ich hab jetzt auch nicht mehr alle im Kopf.

Vielleicht könnte der Kollege von der Wohlfahrt sich ja doch dazu hinreißen lassen, die richtige Lösung mal zu posten.
Dann muss ich nicht noch zehntausend Versuche starten um festzustellen, dass ich scheinbar nicht kapiere, was ich falsch mache

Gruss

Spoiler
Spoiler ist offline  
Alt 12.02.2009, 15:45  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dann wandel den Zeichensatz halt davor oder danach um.
Chriz ist offline  
Alt 12.02.2009, 15:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Das reguläre Ausdrücke in den Bereich der Einsteiger zählen, war mir bis jetzt unbekannt ... hätte das für Fortgeschritten gehalten
Hättest Du die gelesen, wüßtest Du, dass es um die Art der Frage, nicht um die Komplexität der Aufgabe geht. Und nur reguläre Ausdrücke sind per se schon mal nicht Fg.

- Chrisz' Ansatz ist der bessere. Wieso einen neuen Parser bauen, wenn andere da schon Zeit investiert haben.
- „geht auch nicht...“ ist ne echt tolle Fehlerbeschreibung
- Stichwort: Gier (greedyness)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 12.02.2009, 16:09  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 5
Spoiler befindet sich auf einem aufstrebenden Ast
Standard

ich hab jetzt was gefunden, was grob funktioniert:
Code:
'/(".*?"):(".*?")/im'
allerdings kommt der mit Zeilenumbrüchen nicht zurecht, obwohl ich /m angegeben habe ... verstehe ich nicht.

komplett sieht das so aus:
PHP-Code:
preg_match_all('/(".*?"):(".*?")/im'$werte$partsPREG_SET_ORDER); 
Ok, den Zeichensatz umwandeln würde ich gerne ... hab ich auch schon Stunden nach gesucht.
Das WIE bliebt mir allerdings verborgen.

Meine Seite arbeitet also mit AJAX, dabei verwende ich JSON.
Die Seite kann ich natürlich als UTF-8 ausgeben. Soweit ich weis, überschreibt der Apache2 aber den Meta-Tag wenn AddDefaultCharset gesetzt und auf ON steht.
Damit würde meine Seite immer im ISO-8859-1 (Latin1) ausgeliefert.

JSON konvertiert meine kompletten Daten nach UTF-8, was mich zu besagtem Problem bringt.
Wie wandle ich denn dann die Sachen wieder um?

Wäre nett, wenn jemand einen Link hätte, wo steht wie es geht.

Kommen wir noch kurz zu meinem Pattern zurück:
1.: "geht nicht" heisst: es kommt nicht das Array raus, was ich oben beschrieben habe.

2.: Warum kommt der Patter trotz /m mit Zeilenumbrüchen nicht klar (der String bricht danach ab)?
aus:
Zitat:
"Test":"testen
wir mal"
Wird:
Zitat:
ARRAY
{
[0] => "Test":"testen
[1] => "Test"
[2] => "testen
}
passt also nicht (geht nicht ).

Weiterhin suche eine Möglichkeit, jetzt die " da gleich rauszufiltern.
Weis jemand wie ich das dem Pattern gleich beibringen kann?

Danke im Voraus

Gruss

Spoiler
Spoiler ist offline  
Alt 13.02.2009, 01:47  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Spoiler Beitrag anzeigen
Ok, den Zeichensatz umwandeln würde ich gerne ... hab ich auch schon Stunden nach gesucht.
Das WIE bliebt mir allerdings verborgen.
Erzaehl doch keinen Stuss, "php zeichensatz umwandeln" bringt dich gleich beim ersten Treffer zur richtigen Funktion.
Chriz ist offline  
Alt 13.02.2009, 08:29  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 5
Spoiler befindet sich auf einem aufstrebenden Ast
Standard

da hast du recht.

Es bleibt eben immer der Unterschied der Worte, die man in Google eintippt ... und die Worte habe ich so nicht eingegeben.
Ich habe viele Sachen gefunden, wie man aus Latin1 utf-8 machen kann, aber eben nicht die umgedrehte Richtung.

Wenn das nun doch so einfach geht, sag ich mal danke schön!
Spoiler ist offline  
 


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
Formulargenerierung | Composite Pattern moveax1 PHP-Fortgeschrittene 13 27.01.2009 09:44
preg_replace: Gleiche Platzhalter im Pattern Lavalampe PHP Tipps 2009 5 16.01.2009 21:42
Singleton Pattern Verstaendisproblem Luka PHP Tipps 2008 13 19.12.2008 19:00
PHP Command Pattern = Module? meGa Software-Design 4 14.12.2008 12:35
[Erledigt] Formularvalidierung, preg_match pattern Problem moveax1 PHP Tipps 2008 4 12.12.2008 16:48
Design Pattern Harry B. Software-Design 7 02.09.2008 20:49
Bild vor Link pattern TimmaY PHP Tipps 2007 5 21.03.2007 18:06
Hilfe bei Pattern Syntax Charly Shop Sui PHP Tipps 2006 4 13.05.2006 20:10
Decorator pattern: 'protected' und parallele vererbung axo PHP-Fortgeschrittene 5 20.10.2005 15:53
[Erledigt] Design Pattern - MySQL Sitzung in allen Objekten nutzen PHP-Fortgeschrittene 21 28.04.2005 22:18
Folgendes Pattern PHP Tipps 2005 5 01.03.2005 12:41
Probleme mit Pattern bei Templateersetzung RudiS PHP-Fortgeschrittene 2 19.02.2005 22:09
Pattern Syntax Problem mit MulitLine PHP Tipps 2004-2 2 21.12.2004 15:53
preg_match --> pattern PHP Tipps 2004 4 27.08.2004 18:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_match pattern, preg_match pattern syntax, preg_match mehrere wörter, php preg_match pattern, preg_match_all platzhalter, preg_match_all pattern, http://www.php.de/php-einsteiger/51724-erledigt-preg_match-und-die-pattern.html, php preg_match_all json, preg_match mehrere, preg_match mehrere pattern, wie funktioniert preg_match, preg_match_all mehrere ausdrücke, php preg_match json, preg_match verschiedene pattern, preg_match_all zählen, preg match all php json, preg_match mehrere begriffe, pattern preg_match, preg_match json, pregmatch pattern

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:16 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