Hitzering: preg_match_all was tun wenn die Daten nicht regelkonform sind?

Beitrag lesen

Hallo,

unsere "interne Suchfunktion" funktioniert so lala. Daher dachte ich mir eine einfache Synonymliste dürfte bessere Ergebnisse bringen.

Die typischen Listen sind wirklich schon super. Jetzt dachte ich mir "wikipedia" bzw. "wiktionary" wird hier noch bessere Daten haben. Und das ist auch so. Leider sind die Daten doch recht ungewöhnlich aufbereitet und enthalten auch mal gerne "individuelle" Absätze / Markierungen die ich gerne Filtere.

Es hat sich herrausgestellt, dass die Synonyme in 99% der Fälle in einer Art <dl> HTML Strukturierung zu finden sind.

Daher bereite ich mir die Datensätzte verschieden vor unter anderem mit preg_match_all('|<dl>(.*)</dl>|Uism',$quelle, $items_synonyme_2, PREG_PATTERN_ORDER); vor. Leider kann man hier: https://de.wiktionary.org/wiki/Familie sehen das es kein zweites öffnendes <dl> gibt. Somit also auch nur 1 Datensatz statt 2 ausgegeben werden siehe:

Quelletext Wiktionary

<p>
  <span style="visibility:hidden" id="Synonyme">
    <span id="Anker:Synonyme"></span>
  </span>
</p>
<div style="margin-bottom:-0.5em; font-weight:bold;" title="bedeutungsgleich gebrauchte Wörter">Synonyme:</div>
<dl>
  <dd>[1] <a href="/w/index.php?title=Blutsverwandte&amp;action=edit&amp;redlink=1" class="new" title="Blutsverwandte (Seite nicht vorhanden)">Blutsverwandte</a>,
          <a href="/wiki/Sippe" title="Sippe">Sippe</a>
    <dl>
      <dd>[1a] <a href="/wiki/Kernfamilie" title="Kernfamilie">Kernfamilie</a></dd>
      <dd>[1b] <i>abwertend, salopp:</i> <a href="/wiki/Mischpoke" title="Mischpoke">Mischpoke</a></dd>
    </dl>
  </dd>
  <dd>[2] <a href="/wiki/Abart" title="Abart">Abart</a>,
          <a href="/wiki/Art" title="Art">Art</a>,
          <a href="/wiki/Bereich" title="Bereich">Bereich</a>,
          <a href="/wiki/Departement" title="Departement">Departement</a>,
          <a href="/wiki/Dialekt" title="Dialekt">Dialekt</a>,
          <a href="/wiki/Fach" title="Fach">Fach</a>,
          <a href="/wiki/Gattung" title="Gattung">Gattung</a>,
          <a href="/wiki/Genus" title="Genus">Genus</a>,
          <a href="/wiki/Geschlecht" title="Geschlecht">Geschlecht</a>,
          <a href="/wiki/Gruppe" title="Gruppe">Gruppe</a>,
          <a href="/wiki/Kategorie" title="Kategorie">Kategorie</a>,
          <a href="/wiki/Linie" title="Linie">Linie</a>,
          <a href="/wiki/Rasse" title="Rasse">Rasse</a>,
          <a href="/wiki/Reihe" title="Reihe">Reihe</a>, 
          <a href="/wiki/Rubrik" title="Rubrik">Rubrik</a>,
          <a href="/wiki/Schlag" title="Schlag">Schlag</a>
  </dd>
</dl>

Was kann ich tun um den zweiten Absatz mit zu nehmen? (die <dd> bzw. </dd> benötige ich später noch zum Filtern der individuellen Varianten).

Edit Rolf B: HTML lesbarer gemacht