Vollständige Version anzeigen : [PHP] Regex für :name|translate() optional


Tiffany Dicks
18.05.2015, 12:05

Hallo.

Ich bräuchte mal Hilfe bei einer Regex.

Ich bekomme es hin Templates nach ''|translate zu scannen. Leider jedoch nicht mit der Ausnahme das es auch Templates mit 'Mein Name ist :name'|translate({":name":"Heinz"}) gibt. Also mit Optionen.

Um zu sagen kann vorkommen, muss aber nicht gibt es ja ? ...

Wie kann ich sagen ''|translate und (;*) kann muss aber nicht? einfach ein ? hinter ) bringt natürlich nichts weil das ja nur auf ein Zeichen achtet.

Eventuell ';*'|translate((;*))? hm

Wäre echt für Hilfe dankbar!

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
raid-rush
18.05.2015, 13:13

Regx: 'Mein Name ist (\w+)'(|translate\((;*)\))?

Du müsstest die () mit backslash entwerten weil das sonst als Metazeichen gilt.

Bin aber auch nicht ganz schlau geworden wie der String aussieht der Verarbeitet wird und welche Info genau alles ausgelesen werden soll.


Tiffany Dicks
18.05.2015, 16:03

Ok. Also der String wäre zum Beispiel wie folgt

{{ 'Hallo'|translate }} oder {{ 'Hallo mein Name ist :name'|translate({"name":"Hans"}) }}

Ich brauche das zwischen ' & ' also Hallo oder Hallo mein Name ist :name und wenn verfügbar die Optionen also den JSON String ...

Ist nen Twig Filter. Und ich baue nen Scanner für die Strings die im Backend übersetzt werden können sollen.


raid-rush
18.05.2015, 16:30

preg_match(";{{ '(;*)'(\|translate|\|translate\((;*)\))? }};Usi",$str,$m);

$m[1] ist Name
Wenn $m[2] vorhanden dann $m[3] ist JSON String


Tiffany Dicks
18.05.2015, 18:49

Danke. Leider findet er die Strings mit "Optionen" überhaupt nicht. Stehen zumindest nicht in der Ergebnisliste.
Komisch. Sieht richtig aus irgendwie...


Togijak
18.05.2015, 23:24

;Tiffany Dicks

Hier (;;;regexe~de/) kannst Du Regex online auf seine Funktion testen und die Seite The Regex Coach - interactive regular expressions (;weitz~de/regex-coach/) könnte auch hilfreich sein


Murdoc
23.05.2015, 23:20

Um das sauber zu parsen brauchst du einen rekursiven regulären Ausdruck.

PHP: Recursive patterns - Manual (;php~net/manual/de/regexp;reference;recursive;php)

Probier' damit mal rum, sollte auf jeden Fall machbar sein ;)

Der reguläre Audruck von raid-rush geht zwar auch, fliegt dir aber sehr schnell auseinander.


Ähnliche Themen zu [PHP] Regex für :name|translate() optional
  • PlayStation 3: Festplatte auch nur optional
    Festplatte als Zubehör - ähnlich wie bei der Konkurrentin Xbox 360 Anders als bisher erwartet wird auch die Festplatte der PlayStation 3 nur als Zubehör angeboten und ist - wie bei der Xbox 360 - nicht zwingend erforderlich. Entwickler müssen also auch bei der PlayStation 3 ihre Spiele so prog [...]

  • [Story] Google Translate Beatbox
    Was Google Translate alles kann! :) Die Deutsch-Deutsche Übersetzung von pv zk bschk pv zk pv bschk zk pv zk bschk pv zk pv bschk zk bschk pv bschk bschk pv kkkkkkkkkk bschk Einfach hier (;translate;google~com/#de%7Cde%7Cpv%20zk%20bschk%20pv%20zk%20pv%20bschk%20zk%20pv%20zk%20bschk%20pv%20zk%20 [...]

  • [Story] [ Suche ] Translate Site
    Hi, vor kurzem wurde hier eine Seite gepostet dort konnte man ein Wort/Satz 100 mal in verschiedene Seiten übersetzen lassen. Ich find den Thread leider nicht wieder. MfG [...]

  • [CGI] regex (mod_rewrite) optional ein / am ende der url
    moin. ich tüftel grad ein wenig mit mo rewrite rum und bin mehr oder weniger an ein problem gestoßen. undzwar möchte ich das man zb: ";example~com/goto/section" und ";example~com/goto/section/" nutzen kann. meine regel dazu lautet: ^goto/([^/]*)(/|)$ index;php?goto=$1 doch wird dazu ja eine unn [...]



raid-rush.ws | Imprint & Contact pr