Andreas Görtz: regexp bsp benötigt

Beitrag lesen

Hi,

<td colspan="2" align="center" class="txt">Du hast heute <b>Geburtstag</b>

und ich möchte genau das auslesen was zwischen ## <td colspan="2" align="center" class="txt">Du hast heute <b>## und ##</b>## steht (also Geburtstag), wobei das "Du hast heute" ignoriert werden kann (an dieser stelle dürfte auch etwas anderes stehen).

folgendes ist sicherlich verbesserungswürdig (bin nicht gerade der Profi, was RegExps angeht ;-)), damit hast du aber schonmal einen Anfang:

// 1. '<td irgendwas>'
=> /<td[^>]*>/

// 2. Rest einschließlich <b>
=> /.*<b>/

// 3. das gesuchte Wort bis </b>
=> /(.*)</b>/

zusammen:

/<td[^>]*>.*<b>(.*)</b>/U

(Modifier U, damit die RegExp nicht zu gierig wird - siehe http://www.dclp-faq.de/q/q-regexp-gierig.html)

<?

$str = '<td colspan="2" align="center" class="txt">Du hast heute <b>Geburtstag</b>';

$regExp = '/<td[^>]*>.*<b>(.*)</b>/U';

preg_match($regExp, $str, $_match);

echo $match[1]; // Ausgabe: Geburtstag

?>

Gruß,
Andreas.