0

特定の URL からメニュー要素 (リンク) を取得することを計画しています。つまり、コードは、サイトに存在する他のすべてのリンクからメニュー リンク (特定のサイト内を移動するために使用されるリンク) をフィルター処理する必要があります。

以前にコンテンツの解析に使用したため、 simplehtmldomを使用する予定です。

問題点:

  1. メニュー リンク コンテナーは、ul li、テーブル、または div 内の単純なタグなど、さまざまな形式にすることができます。
  2. メニュー リンクは画像にすることができます (その場合、コードは alt または title タグを使用する必要があります)

私の質問:

  1. リンクの内容を何らかの方法で分析して、それらがリンクであることを確認する可能性はありますか? など、href が同じドメイン名href="http://domain.com/link"またはローカルの場合 href="/link"
  2. 通常の言語切り替えボタンを除外するにはどうすればよいですdomain.com/ENen.doamin.com? これらは、実際のメニュー ナビゲーション リンクに非常に似ています。

要点を理解していただければ幸いです。

ベスト、マルティ

4

1 に答える 1

0

この正規表現は、指定された文字列が URL であるかどうかをテストします。

^(http[s]?://|ftp://)?(www\.)?[a-zA-Z0-9-\.]+\.(com|org|net|mil|edu|ca|co.uk|com.au|gov|br)$

いくつかの preg_match テストを実装できます...お役に立てば幸いです

参照:

http://php.net/manual/en/function.preg-match.php

[編集]

変数 $thePath は、現在のサイトの URL を取得する必要があります。

$theProtocol = (strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === false) ? 'http' : 'https';
$thePath = $theProtocol.'://'.$_SERVER['SERVER_NAME'];

したがって、一致する文字列を変数コンテンツと比較して、内部リンクを操作しているかどうかを判断できます。

これは役に立ちます:

function str_starts_with($haystack, $needle, $caseSensitive = true){
        if($caseSensitive)
            return strpos($haystack, $needle) === 0;
        else
            return stripos($haystack, $needle) === 0;
    }
于 2013-09-05T16:36:13.580 に答える