<?php
$example = <<<EOT
Aller Anfang ist schwer. Man fühlt sich als sei man mitten in der Sahara ausgesetzt. Aber mit etwas Praxis wird alles gut.
EOT;
$data = explode(' ',$example);
function match_array ($arr, $regexp)
{
print '<span style="font-family:courier,monospace;letter-spacing:0.75em;">';
foreach ($arr as $a) {
$dummy = preg_match($regexp, $a);
$match = $dummy
? '+'
: '-';
$mark = preg_replace($regexp,'<strong class="inverse">\0</strong>',$a);
printf ('%s %s<br>', $match,$mark);
}
print '</span>';
}
$regexps = <<< EOT
#a#;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> beinhalten. Dabei wird zwischen Groß- und Kleinschreibung unterschieden.
#A#;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>A</em> beinhalten. Dabei wird zwischen Groß- und Kleinschreibung unterschieden.
#a#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> beinhalten. Dabei wird Groß- Kleinschreibung ignoriert.
#^a#i;Dieser Ausdruck passt auf alle Zeichenketten welche mit einem <em>a</em> beginnen. Dabei wird Groß- Kleinschreibung ignoriert.
#ei#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>ei</em> beinhalten. Dabei wird Groß- Kleinschreibung ignoriert.
#a.s#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> und ein <em>s</em> beinhalten. Zwischen diesen Buchstaben kann genau ein beliebiger weiterer Buchstaben stehen. Dabei wird Groß- Kleinschreibung ignoriert.
#a.?s#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> und ein <em>s</em> beinhalten. Zwischen diesen Buchstaben kann genau ein beliebiger, oder gar kein weiterer Buchstaben stehen. Dabei wird Groß- Kleinschreibung ignoriert.
#a.*s#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> und ein <em>s</em> beinhalten. Zwischen diesen Buchstaben können beliebige weitere Buchstaben stehen. Dabei wird Groß- Kleinschreibung ignoriert.
#a(.*)?s#i;Dieser Ausdruck passt auf alle Zeichenketten welche ein <em>a</em> und ein <em>s</em> beinhalten. Zwischen diesen Buchstaben können beliebige, oder auch gar keine, weitere Buchstaben stehen. Dabei wird Groß- Kleinschreibung ignoriert.
#a$#i;Dieser Ausdruck passt auf alle Zeichenketten welche mit einem <em>a</em> enden. Dabei wird Groß- Kleinschreibung ignoriert.
#^(a|s)#i;Dieser Ausdruck passt auf alle Zeichenketten welche mit einem <em>a</em> oder einem <em>s</em> beginnen. Dabei wird Groß- Kleinschreibung ignoriert.
#^[a-m]#i;Dieser Ausdruck passt auf alle Zeichenketten mit Anfangsbuchstaben zwischen <em>a</em> und <em>m</em>. Dabei wird Groß- Kleinschreibung ignoriert.
#^[^a]#i;Dieser Ausdruck passt auf alle Zeichenketten welche nicht mit <em>a</em> beginnen. Dabei wird Groß- Kleinschreibung ignoriert.
#^[^a]*$#i;Dieser Ausdruck passt auf alle Zeichenketten welche kein <em>a</em> beinhalten. Dabei wird Groß- Kleinschreibung ignoriert.
#^[b-z]*$#i;Dieser Ausdruck passt auf alle Zeichenketten welche kein <em>a</em> beinhalten. Dabei wird Groß- Kleinschreibung ignoriert.
#(.)\1#i;Dieser Ausdruck passt auf alle Zeichenketten welche einen Doppelbuchstaben, also z.B. <em>ll</em> beinhalten. Dabei wird Groß- Kleinschreibung ignoriert.
#(.).\1#i;Passt auf ein Muster wie z.B. <em>axa</em> oder <em>bnb</em>.
#[A-Z]#;Dieser Ausdruck passt auf alle Zeichenketten welche einen Großbuchstaben beinhalten.
#\W#;Dieser Ausdruck passt auf alle Zeichenketten welche ein Sonderzeichen beinhalten.
#.#;Dieser Ausdruck passt auf alle Zeichenketten mit mindestens fünf Zeichen.
#^.$#;Dieser Ausdruck passt auf alle Zeichenketten mit genau fünf Zeichen.
#^.{3,5}$#;Dieser Ausdruck passt auf alle Zeichenketten mit einer Länge zwischen drei und fünf Zeichen.
EOT;
$regexp = explode ("\n",$regexps);
echo <<< EOT
<style type="text/css">
strong.inverse
{
color:#ffffff;
background-color:#666666;
}
</style>
EOT;
foreach ($regexp as $r) {
if (trim($r) == '') {
continue;
}
list ($re,$expl) = explode (';',$r);
printf ('<hr noshade="noshade" size=1><h1 style="color:#618989">%s</h1><p style="width:450px;">%s</p>', $re,$expl);
match_array($data,$re);
}
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.