PHP REGEX: найти dom-узел на основе innerHTML - PullRequest
0 голосов
/ 21 октября 2010

Поскольку я хорошо знаю, что PHPDom может решить половину моей проблемы, мне нужен способ (не обязательно регулярное выражение), чтобы можно было найти определенный элемент DOM на основе заданного innerHTML.

скажем, например, я получил этот код:

<tr>
  <td class="ranking_rank" style="vertical-align:middle;">48697</td>
  <td class="ranking_ign" style="vertical-align:middle;">kanineh</td>
  <td class="ranking_img" style="vertical-align:middle;">
    <img src="http://avatar.maplesea.com/Character/NKGEHGDLFNINKPMFLDCNNOHKHKBOHBKLGCBLABFLABHAGBPAEMDEFABJBLKJIHJAANGEKFJGELEPKMCNLKPCINEJDGAJFLKG.gif" onerror="this.src='/images/ranking/noimage.jpg'"/>
  </td>
  <td class="ranking_lvl" style="vertical-align:middle;">122</td>
  <td class="ranking_world" style="vertical-align:middle;">
    <img src="/images/ranking/Bootes.gif" onMouseover="ddrivetip('Bootes','white', 70)" onMouseout="hidetip()">
  </td>
  <td class="ranking_job" style="vertical-align:middle;">
    <img src="/images/ranking/Warrior.gif" onMouseover="ddrivetip('Warrior','white', 70)" onMouseout="hidetip()">
  </td>
  <td class="ranking_fame" style="vertical-align:middle;">449</td>
</tr>
<tr>
  <td class="ranking_rank" style="vertical-align:middle;">48698</td>
  <td class="ranking_ign" style="vertical-align:middle;">WannaLogic</td>
  <td class="ranking_img" style="vertical-align:middle;">
    <img src="http://avatar.maplesea.com/Character/DOMELFGEGCGDBFCOLADBDOJLHADCIBNKEGKGINPNBEKPDDKOEEGBLMDLBGBDHGCNPGLAECAMLGKEMDKJGPODIDKCOJCMNNKN.gif" onerror="this.src='/images/ranking/noimage.jpg'"/>
  </td>
  <td class="ranking_lvl" style="vertical-align:middle;">122</td>
  <td class="ranking_world" style="vertical-align:middle;">
    <img src="/images/ranking/Aquila.gif" onMouseover="ddrivetip('Aquila','white', 70)" onMouseout="hidetip()">
  </td>
  <td class="ranking_job" style="vertical-align:middle;">
    <img src="/images/ranking/Magician.gif" onMouseover="ddrivetip('Magician','white', 70)" onMouseout="hidetip()">
  </td>
  <td class="ranking_fame" style="vertical-align:middle;">56</td>
</tr>

Мне нужно, чтобы я мог ухватить весь узел строки с тд, в котором есть WannaLogic.таким образом, когда у меня уже есть эта строка таблицы, теперь я могу легко перемещаться по узлам, используя PHP DOM.Я пристрастился к регулярному выражению, поэтому я очень признателен, если вы сможете пролить мне немного света на это.

1 Ответ

0 голосов
/ 21 октября 2010

Использование регулярных выражений в дереве DOM - нет-нет, и оно неизбежно приведет к сбою при столкновении с некорректным XML / HTML.Попробуйте это:

$xpath = new DOMXPath($doc);
$query = "//*[.='WannaLogic']";
$entries = $xpath->query($query);

foreach ($entries as $entry) {
    // do whatever
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...