1

<li>基本的に、リンクの親が要素であるかどうかを確認したいと思います。

SimpleDOMパーサーライブラリを使用しています。私はこのようなリンクを取得します($ brokenlinkはURLです):

$html = file_get_html($file);
$matches = $html->find("a[href=$brokenlink]");

次に、$matchesをループします

foreach ($matches as $value) {

}

私の論理は行くでしょう:

$valueの親が'li'でない場合は、次のようにします。

ありがとう

4

3 に答える 3

1

DOMXPathおよびを使用してアンカーのNodeListを実行するのは簡単DOMDocumentです。

// Create a new DOMDocument, load up our HTML
$doc = new DOMDocument();
$doc->loadHTML($html);

// Create a new DOMXPath object, and get our links
$xpath = new DOMXPath($doc);
$links = $xpath->query("//a[not(parent::li)][@href='$brokenURL']");

// Cycle over each anchor, check parentNode's nodeName
foreach ($links as $link) {
    echo "'{$link->nodeValue}' is not the child of a list item.";
}

デモ:http ://codepad.org/UCtR49p4

于 2012-12-02T02:02:55.870 に答える
0

simple_html_domを使用しているので、を使用$value->parent()して親ノードtagを取得し、タグ名を取得できます。

$html = file_get_html($file);
$matches = $html->find("a[href=$brokenlink]");
foreach ($matches as $value) {
    $parent = $value->parent();
    if($parent->tag != 'li') {
        //not a child of li, do something...
    }
}

あなたが必要とするすべてを持っているマニュアルを読むことによってあなたはより多くを得ることができます。

于 2012-12-02T02:05:13.417 に答える
0

simplehtmlのマニュアルによると、要素の親はとして使用できます$e->parent()。だからあなたはこれを行うことができます:

$html = file_get_html($file);
$anchors = $html->find("a[href=$brokenlink]");

for ($anchors as $a) {
    if ($a->parent()->tag !== 'li') {
        // do something
    }
}
于 2012-12-02T02:09:46.967 に答える