RegExp - Filterung von Inhalten

Hallo,

folgender regulärer Ausdruck:

function getfntclassinf($htmlpiece) {
$Res = Array();
$reg = ‚/
([^ ([^
)
/x‘;
if(preg_match_all($reg, $htmlpiece, $Matches, PREG_SET_ORDER) ) {
foreach($Matches as $m) {
$Res[] = count($m) > 2
? Array(‚text‘ => $m[3], ‚font‘ => $m[2])
: Array(‚text‘ => $m[1], ‚font‘ => ‚‘);
}
}

return $Res;
}

$text = ‚abc123‘;
$tmp = getfntclassinf($text);

Als Resultat erhalte ich jeweils ein Array mit dem Font-Namen und der dazugehörigen Schriftart. Doch nun hat sich die Auforderung etwas geändert.

Aus dem ursprünglichen zu parsenden Text (‚abc123‘), wurde nun ‚abc123Test‘;

Wie muss ich den regulären Ausdrück verfeinern, damit er weiterhin funktioniert?

Vielen Dank!

Viele Grüße

Hallo Pseudo123,

eigt. sehe ich kein grund warum das muster nicht mehr treffen sollte? wo der font tag steht sollte für das Script keine relevanz haben.

Oder möchtest du jetzt auch zusätzlich die klasse der spalten auslesen?

Hallo,

leider konnte ich bis jetzt keine saubere Lösung entwickeln.

Pattern: /([^(\w+)((\w+?)(\w+).*)*)/x
Haystack 1: abcdefghixxx
Haystack 2: abcdef
Haystack 3: abc

Gewünschtes Resultat bei Haystack 1:
$font[0][‚font‘] = ‚x123‘;
$font[0][‚text‘] = ‚abc‘;
$font[1][‚font‘] = ‚font6‘;
$font[1][‚text‘] = ‚def‘;
$font[2][‚font‘] = ‚font7‘;
$font[2][‚text‘] = ‚ghi‘;
$font[3][‚font‘] = ‚x123‘;
$font[3][‚text‘] = ‚xxx‘;

Wie muss mein Pattern aussehen?

Es geht um eine Erweiterung der Anwendung, bin somit auf die regulären Ausdrücke angewiesen, vielen Dank.

Viele Grüße