preg_match_all und preg_replace Syntax richtig?
Achim
- php
Hallo
habe leider mit regexpresions noch nicht viel gemacht daher etwas unsicher
Kann mal jemand über den folgenden codes sehen ober so passt
Es soll nach inhalten im string gesucht werden und diese dann ersetzt werden
Ich benötige alle gefundenen in einem array was dann wieder mit werten eines anderen (erfolgt später) verglichen wird und ersetzt wird
Später läuft dann alles in einer schliefe.
$string ='Hallo <-KAnrede-> <-KVorname-> <-KNachname-> <-Artikelliste->
<--Artikelliste-->
Leider haben wir von Ihnen noch keine Rückmeldung zu der/den folgenden Fragen erhalten.
<-Artikelliste->';
$regexpr = "/<-Artikelliste[->]*>/";
if (preg_match_all($regexpr,$string,$ausgabe)){
echo "<br>das muster passt auf ===>";
echo "<br>Gesamtmuster : ";
echo "<br>Teilmuster 1.1 : ".$ausgabe[0][0];
echo "<br>Teilmuster 1.2 : ".$ausgabe[0][1];
echo "<br>Teilmuster 1.3 : ".$ausgabe[0][2];
}else{
echo "<br>leider nichts gefunden <==>";
}
function remove_dw_comments($string,$muster,$ersetzt)
{
return preg_replace("/$muster/U",$ersetzt,$string);
}
$ersetzt= '<{$stringname}>';
echo "<br>mal sehn was er ausgibt ===>".remove_dw_comments($string,$ausgabe[0][1],$ersetzt)
Gruss und danke
Achim
Hallo,
Kann mal jemand über den folgenden codes sehen ober so passt
ja was haben Deine Tests denn ergeben?
Es soll nach inhalten im string gesucht werden
ach ne, kaum zu glauben. nach welchen denn?
$regexpr = "/<-Artikelliste[->]*>/";
'-' in einer Zeichenklasse muß glaub ich escaped werden: [-]
[->]* damit suchst Du das mehrfache Vorkommen von '-' oder '>'. Wenn ich richtig sehe, sucht Du aber '->' oder '-->', also [-]+>
Gruß, Andreas
Hallo,
$regexpr = "/<-Artikelliste[->]*>/";
'-' in einer Zeichenklasse muß glaub ich escaped werden: [-]
[->]* damit suchst Du das mehrfache Vorkommen von '-' oder '>'. Wenn ich richtig sehe, sucht Du aber '->' oder '-->', also [-]+>
mit
$regexpr = "/<+[-][a-z]|[A-Z]rtikelliste[-]+>/";
klappt es aber nicht da gibt er mir
das
Artikelliste-->
und das
Artikelliste->
aus
wobei
<-1rtikelliste->
<--Artikelliste-->
<-Artikelliste->
diese im text enthalten waren
Kannst mir jemand bei dieser abfrage behilflich sein
Super wäres es, wenn ich alle die mit
<- beginnen und mit
-> enden und nur aus alphanumerischen zeichen besetehen
finde und ein ein array abspeichern könnte wie es mit preg_match_all
gehen sollte
Viele Grüsse und danke schonmal
Achim
Hallo achim.
'-' in einer Zeichenklasse muß glaub ich escaped werden: [-]
Nein, das ist ein Irrglaube.
[->]* damit suchst Du das mehrfache Vorkommen von '-' oder '>'.
Jain, eines oder keines der Zeichen, die in der Klasse notiert sind, einschließlich des Backslash.
Super wäres es, wenn ich alle die mit
<- beginnen und mit
-> enden und nur aus alphanumerischen zeichen besetehen
Das hier wäre ein Anfang:
$muster = "/^<-\w+->$/";
Wobei zu beachten ist, dass '\w' auch den Unterstrich einbezieht und dass die Behandlung von Umlauten plattformabhängig ist, statt dessen wäre z.b. auch
$muster = "/^<-[A-Za-z0-9äÄöÖüÜß]+->$/i";
denkbar.
Freundschaft!
Siechfred
Hallo Siechfred,
Das hier wäre ein Anfang:
$muster = "/^<-\w+->$/";
Wobei zu beachten ist, dass '\w' auch den Unterstrich einbezieht und dass die Behandlung von Umlauten plattformabhängig ist, statt dessen wäre z.b. auch
$muster = "/^<-[A-Za-z0-9äÄöÖüÜß]+->$/i";
damit klappte es leider nicht er gab nur anfangszeichen aus und anderen...
Hier mal der string
$string ='Hallo <-KAnrede-> <-KVorname-> <-KNachname-> <-1rtikelliste-><--Artikelliste-->Leider haben wir von Ihnen noch keine Rückmeldung zu der/den folgenden Fragenerhalten.<-Artikelliste->';
und ich möchte alle rausziehen die mit
<- beginnen und
mit -> enden und nur
[<a-zA-Z] sind
dabei saool mir dan das array folgendes ausgeben
<-KAnrede->
<-KVorname->
<-KNachname->
aber nicht <--Artikelliste--> und <-1rtikelliste->
aber schon
<-Artikelliste->
Gruss Achim
Hallo Achim.
$muster = "/^<-\w+->$/";
$muster = "/^<-[A-Za-z0-9äÄöÖüÜß]+->$/i";
damit klappte es leider nicht er gab nur anfangszeichen aus und anderen...
Ja, liegt an den Begrenzern, war mein Fehler, hatte deine Ausgangsfrage nicht richtig gelesen :)
Hier mal der string
$string ='Hallo <-KAnrede-> <-KVorname-> <-KNachname-> <-1rtikelliste-><--Artikelliste-->Leider haben wir von Ihnen noch keine Rückmeldung zu der/den folgenden Fragenerhalten.<-Artikelliste->';
Lass mal die Begrenzer weg und setze das g-Flag (wobei mir das Verhalten von preg_match_all gerade nicht vorliegt, da php.net down zu sein scheint, evtl ist 'g' da überflüssig). Ach so, das sähe dann so aus (mit g-Flag):
$muster = "/<-[A-Za-z0-9äÄöÖüÜß]+->/g";
Freundschaft!
Siechfred
Hallo Siegfred
rade nicht vorliegt, da php.net down zu sein scheint, evtl ist 'g' da überflüssig). Ach so, das sähe dann so aus (mit g-Flag):
$muster = "/<-[A-Za-z0-9äÄöÖüÜß]+->/g";
jetzt bringt er
Unknown modifier 'g'
verwende hier php-5.0.2
???
Gruss und danke für die Hilfe
Achim
Hallo Achim.
jetzt bringt er
Unknown modifier 'g'
Dann eben ohne das "g" am Ende.
Freundschaft!
Siechfred
mit
$regexpr = "/<+[-][a-z]|[A-Z]rtikelliste[-]+>/";
klappt es aber nicht
_WAS_ klappt nicht?
da gibt er mir
das
Artikelliste-->
und das
Artikelliste->
aus
Du sollst es ja auch richtig schreiben:
$regexpr = "/<[-]+[a-z]|[A-Z]rtikelliste[-]+>/";
Super wäres es, wenn ich alle die mit
<- beginnen
'<-'
und mit -> enden
'->'
und nur aus alphanumerischen zeichen besetehen
\w
also:
/<-\w+->/
vorhin hast Du allerdings noch was anderes gesucht. Mir scheint das Problem, daß Du Dein Problem nicht genau beschreibst.
finde und ein ein array abspeichern könnte wie es mit preg_match_all
gehen sollte
laß uns mal beim regExp bleiben: was suchst Du? Wenn Du das nicht weißt, kann Dir keiner helfen.
Gruß, Andreas