Portal > Foren > PHP > PHP-Programmierung > Regexp umstellen von " auf ' bei preg_match_all
Antwort
 
Themen-Optionen
Alt 02.02.2007, 13:46 Nach oben    #1
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard Regexp umstellen von " auf ' bei preg_match_all

Hallo,
ich hab ein Problem mit meinem Regulären Ausdruck, wo die " durch ' ersetzen wollte.

Das hier funktioniert ohne Probleme:
PHP-Code:
$pattern '/{key.*name="(.*)".*}/iU';
preg_match_all$pattern$keys_template$matchesPREG_PATTERN_ORDER ); 
Zu suchende Zeichenkette:
Code:
{key name="text" /}


Das hier leider nicht:
PHP-Code:
$pattern "/{key.*name='(.*)'.*}/iU";
preg_match_all$pattern$keys_template$matchesPREG_PATTERN_ORDER ); 
Zu suchende Zeichenkette:
Code:
{key name='text' /}

(Das hat auch gedauert bis ich es gefunden habe. Puuu...)


Nun ich würde gerne an der Stelle die ' nutzen. Habt ihr da evtl. Tipps oder Anregungen wie ich das anderes oder besser machen könnte.

Meine Vermutung zur Zeit ist, dass evtl. an UTF-8 Zeichensatz liegt, da ich beim Editor nicht den Zeichensatz einstellen kann und die PHP-Dateien evtl. dann anders abgespeichert werden.

Habt ihr noch andere Ideen?

Öhm, vielleicht noch dazu. Beim zweiten Fall wird ebenfalls der $matches Array gefüllt, nur ohne Inhalt!


EDIT: preg_replace verhält sich da korrekt. Weswegen es mich zusätzlich verwundert.

Geändert von dago (02.02.2007 um 13:58 Uhr).
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 14:17 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Zitat:
wo die " durch ' ersetzen wollte
Aha, warum willste dann beim 2. Script das wieder umgekehrt machen ?

EDIT:
Und nimm das PREG_PATTERN_ORDER mal raus.

Geändert von CIX88 (02.02.2007 um 14:19 Uhr).
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 14:33 Nach oben    #3
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Naja, dass ist eine simple Template Klasse. Aus Darstellungsgründen wollte ich das ändern:
HTML-Code:
{array name="urls"}
<a href="{key name="a_url"}">{key name="a_text"}</a>
{/array}

<!-- neu sollte es so sein: -->
{array name='urls'}
<a href="{key name='a_url'}">{key name='a_text'}</a>
{/array}
Mit preg_replace funktioniert das herforagend und das abändern hat keine Probleme verursacht. Nur da, wo ich preg_match_all brauche, wird zwar ein Array (interessanter weise mit entsprechender Anzahl Ergebnisse) zurückgeliefert, aber eben mit leerem Inhalt!

Die Idee bei einer solchen Template Klasse, wahr sich an HTML Still zu halten, nur das man anstatt der Begrenzungen <> eben {} nutzt.

EDIT:
Zitat:
EDIT:
Und nimm das PREG_PATTERN_ORDER mal raus.
Macht kein Unterschied. Der Array hat immer noch leeren Inhalt. Aber ok, der wird jetzt vermutlich jetzt anders gefüllt.

Geändert von dago (02.02.2007 um 14:35 Uhr).
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 15:00 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Zitat:
Der Array hat immer noch leeren Inhalt
Bei mir nicht

EDIT:

Hab das jetzt mal nachgebaut:
http://www.regex-tester.de/regex4_20070202150059.html

Geändert von CIX88 (02.02.2007 um 15:04 Uhr).
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 15:24 Nach oben    #5
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Das ist es ja, dass es eigentlich funktionieren sollte. Hmm...

Zitat:
Meine Vermutung zur Zeit ist, dass evtl. an UTF-8 Zeichensatz liegt, da ich beim Editor nicht den Zeichensatz einstellen kann und die PHP-Dateien evtl. dann anders abgespeichert werden.
Vermutlich sind dann die Datein verschieden abgespeichert. Da es ja auch Verschiedene Templates (jeweils eine Datei) sind. Da wird das Zeiche ' wohl nicht gleich dem ' gewertet. Nuja, ich gug


Trotzdem Danke CIX88!
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 15:30 Nach oben    #6
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Dann solltest du dir nen Editor holen der Zeichensätze kann. Notepad++ für die einfachen und schnellen Arbeiten. Oder Eclipse und PHPEclipse-Plugin, da haste ne richtige Arbeitsumgebung...
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 18:11 Nach oben    #7
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Nun nachdem ich sämtliche Dateien durchgegangen bin und auf das gleiche Zeichensatz eingestellt habe, wahr ich ein Schritt weiter.

Da $keys_template aus einem Template durch preg_replace herausgenommen wird und mit dem Modifer - e an die Funktion übergeben wird, musste ich den Regexp noch etwas ergänzen. Den $keys_template sieht dann Beispielsweise so aus:
HTML-Code:
<a href="{key name=\'a_url\'}">{key name=\'a_text\'}</a> 
Weswegen der endgültige Ausdruck so aussieht:
PHP-Code:
$pattern "/{key.*name=\\\'(.*)\\\'.*}/iU"

Nuja, falls jemand auch mal sowas tüfteln wird. Hoffe das hilft.


@WarrenFaith
Eigentlich nutze ich ja Eclipse, allerdings noch zusätzlich ein anderes Editor, der das nicht kann. Und auf das Zeichensatz, wie Dateien nun endgültig abgespeichert werden habe leider nicht geachtet. So, jetzt hab ich die nötigen Einstellungen bei Eclipse gefunden und eingestellt. (Musste mich eigentlich auch noch nicht mit anderer Länder Sprachen beschäftigen.)


EDIT: Ich seh grad, dass man den Titel nicht ändern kann. Also das Problem ist gelöst! Thema kann abgeschlossen werden.
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 18:22 Nach oben    #8
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Zitat:
<a href="{key name=\'a_url\'}">{key name=\'a_text\'}</a>
Das steht aber hoffentlich nicht in deinen Templates oder? Das ist sinnlos.
Zitat:
<a href="{key name='a_url'}">{key name='a_text'}</a>
und
PHP-Code:
$pattern "/{key.*name=\'(.*)\'.*}/iU"
oder hab ich da mal wieder was falsch verstanden?
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2007, 21:33 Nach oben    #9
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Zitat:
Zitat von dago
Da $keys_template aus einem Template durch preg_replace herausgenommen wird und mit dem Modifer - e an die Funktion übergeben wird, musste ich den Regexp noch etwas ergänzen.
preg_replace maskiert bei mir automatisch das Zeichen '

Im Template steht:
HTML-Code:
...
{array name='urls'}
<a href="{key name='a_url'}">{key name='a_text'}</a>
{/array}
...
Ich tue nämlich mit der Funktion preg_replace den Inhalt zwischen {array name='urls'} und {/array} herausschneiden und an eine weitere Funktion übergeben, dabei wird folgender Inhalt aus diesem Template übergeben:
HTML-Code:
<a href="{key name=\'a_url\'}">{key name=\'a_text\'}</a> 
Deswegen das zusätzliche \\


Hat auch gedauert bis ich drauf gekommen bin. Ich hab beim Testen mit var_dump() zuerst angenommen, dass var_dump es maskieren würde. Stimmt aber nicht, dass tut nämlich preg_replace.

Das ist mein Code an der Stelle:
PHP-Code:
$result preg_replace"/{array.*name='(.*)'.*}(.*){\/array}/iseU"'$this->replaceArrayWildcardsHelper( "$1", "$2", $replacements )'$template ); 
dago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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 aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
Seite auf Templates umstellen? björn PHP-Programmierung 4 02.05.2006 21:37
Navigation auf Smarty umstellen?! napsio PEAR, PECL und Frameworks 4 25.01.2006 19:22
[PHP] Aktuell gespielten Titel von XMMS auf einer Webseite in einer Grafik anzeigen Corvin Tutorials 0 28.11.2005 16:26
Login auf mehreren Domains Homepagespeicher PHP-Programmierung 17 21.08.2005 16:54


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


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44