Sonderzeichen in Variable - Geht nicht?

Was soll der Ausdruck denn machen?

Nach dem Pattern kommt eine Schleife wo alle Zeichen eine bestimmte URL zugeordnet werden.

Beispiel:
!A = /images/große-grafiken/
A = /images/kleine-grafiken/
@ = /images/background/

PHP:
// Funktioniert nicht
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(\@)|(\[\(\<\>\)\])#'; 

// Pattern aufgeteilt

// Pattern 1
$pattern1 = '#(![A-Z0-9ÄÖÜ])#'; 

// Pattern 2
$pattern2 = '#([A-Z0-9ÄÖÜ])#';

// Pattern 3
$pattern3 = '#(\@)#';

// Pattern 4 (Funktioniert nicht)
$pattern4 = '#(\[\(\<\>\)\])#';

Ich brauch also kein "großes Pattern" mit allen Ausdrücken sondern getrennt wie bei meinem normaln Pattern.

PHP:
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(\@)|(\[\(\<\>\)\])#';

Wie man sehen kann sind das 4 Pattern und das 4. Funktioniert nicht. Auch mit einem "Pattern Generator" erstellts Pattern nicht. Habe ich jetzt leider nicht nur Hand weil ich gar nicht zuhause bin und über TeamViewer auf meinem Home-Computer zugreife.

Das hier Funktioniert perfekt:
PHP:
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(\@)#';

Aber ich brauche folgende Zeichen:
PHP:
1. (
2. [
3. (
4. <
5. >
6. )
7. ]

(\[\(\<\>\)\]) // Geht nicht
 
Du willst also eine Menge aus folgenden Zeichen: [, ], (, ), <, > ? Dann sollte dein Pattern wohl eher so aussehen:
Code:
([\[\]()<>])
 
Warum funktioniert das?

Mit eckigen Klammern [ ] kannst du genau ein Zeichen festlegen, was an der Stelle vorkommen soll/darf.
[ab12] steht für ein einziges Zeichen, nämlich entweder a oder b oder 1 oder 2.
Mit runden Klammern legst du Gruppierungen fest. Das ist später für die Auswertung hilfreich, oder wenn du bestimmte Suchmuster die aus mehr als einem Zeichen bestehen mit weiteren Operatoren bearbeiten willst. Wenn etwas nicht in eckigen Klammern steht, dann wird genau nach dem gesucht, was da steht:
(\[\(\<\>\)\]) das sucht jetzt nach nach folgender Zeichenkette: [(<>)] und zwar am Stück. Weniger oder mehr wird nicht gefunden. Daher entweder alles durch Oder ( | ) trennen, oder, sinnvoller, die eckigen Klammern, wie einfach nur crack es gemacht hat, verwenden. Dann wird nämlich nur eins aus dem ganzen Salat ausgesucht und nicht alle hintereinander.
 
Zurück