Wie kann ich mit Regex in einem Text eckige Klammern mit mehr als 3 Zeichen finden?
Ich finde zwar alle eckigen Klammern, aber ich hätte gerne nur die ausgewählt, die mehr als 3 Zeichen enthalten (egal was für welche):
preg_match_all('(\\[.*?\\])', $content, $matches);
1 Antwort
Folgender Code:
$c = 'abc [a] def [de] ghi [ghi] jkl [jklm] mno';
preg_match_all('/\\[([^\\]]{3,})\\]/', $c, $m);
print_r($m);
... liefert diese Ausgabe:
Array (
[0] => Array (
[0] => [ghi]
[1] => [jklm]
)
[1] => Array (
[0] => ghi
[1] => jklm
)
)
Ich habe die Klammern etwas anders gesetzt, dass du direkt auf den Inhalt innerhalb der eckigen Klammern zugreifen kannst, ohne dass diese selbst im Ergebnis erscheinen. (Also die Matches in Gruppe "1"!) :)
Fantastisch! Sehr hilfreich sind natürlich auch die beiden Arrays - auch wenn es mir völlig rätselhaft ist, wie du das anstellst... :)
Muss mich jetzt mal ernsthaft mit dieser Funktion beschäftigen!