2

こんにちは私はリンクを抽出したい と思います<a href="/portal/clients/show/entityId/2121" > 、そして私は私に/ portal / projects / show / entityId / 2121を与える正規表現が欲しいです最後の2121の番号は他のリンクで何か考えが異なりますか?


Java休止状態でリストタイプを変換する方法

Javaアプリケーションでは、休止状態の基準クエリを使用します。次に例を示します。

Criteria criteria = session.createCriteria(Any.class);
...

List<?> list = criteria.list();

結果リストにはAny型のオブジェクトのみが含まれていることは明らかですが、上記で定義された型のリストを取得できるかどうかはわかりません。

この場合、foreachを使用する場合は、タイプをオブジェクトからタイプAnyに変換する必要があります。

for(Object object : list) {
    ...
    ((Any)object).
    ...
}

または、配列を取得する必要がある場合は、次のようなことを行う必要があります。

list.toArray(new Any[]{});

あなたはなにか考えはありますか?

4

6 に答える 6

11

シンプルな PHP HTML Dom パーサーの例:

// Create DOM from string
$html = str_get_html($links);

//or
$html = file_get_html('www.example.com');

foreach($html->find('a') as $link) {
    echo $link->href . '<br />';
}
于 2009-10-05T12:19:33.287 に答える
6

xml/html の処理に正規表現を使用しないでくださいこれは、組み込みの dom パーサーを使用して非常に簡単に実行できます。

$doc = new DOMDocument();
$doc->loadHTML($htmlAsString);
$xpath = new DOMXPath($doc);
$nodeList = $xpath->query('//a/@href');
for ($i = 0; $i < $nodeList->length; $i++) {
    # Xpath query for attributes gives a NodeList containing DOMAttr objects.
    # http://php.net/manual/en/class.domattr.php
    echo $nodeList->item($i)->value . "<br/>\n";
}
于 2009-10-05T12:28:57.987 に答える
1

これが私の解決策です:

<?php
// get links
$website = file_get_contents("http://www.example.com"); // download contents of www.example.com
preg_match_all("<a href=\x22(.+?)\x22>", $website, $matches); // save all links \x22 = "

// delete redundant parts
$matches = str_replace("a href=", "", $matches); // remove a href=
$matches = str_replace("\"", "", $matches); // remove "

// output all matches
print_r($matches[1]);
?>

xml ベースのパーサーの使用は避けることをお勧めします。これは、ドキュメント/Web サイトが適切に形成されているかどうかを常に把握できるとは限らないためです。

よろしくお願いします

于 2013-10-29T23:01:34.780 に答える
1

リンクを解析するための正規表現は次のようなものです。

'/<a\s+(?:[^"'>]+|"[^"]*"|'[^']*')*href=("[^"]+"|'[^']+'|[^<>\s]+)/i'

それがどれほど恐ろしいことかを考えると、少なくともリンクを取得するためにSimple HTML Domを使用することをお勧めします。次に、リンクの href で非常に基本的な正規表現を使用してリンクをチェックできます。

于 2009-10-05T12:20:40.137 に答える
1

HTMLを「解析」するとき、私は主に正規表現ではなくhttp://code.google.com/p/phpquery/のPHPQueryに依存しています。

于 2009-10-05T12:24:58.677 に答える
0

HTMLからのリンクの解析は、amHTMLパーサーを使用して実行できます。

すべてのリンクが揃ったら、最後のスラッシュのインデックスを取得するだけで、番号がわかります。正規表現は必要ありません。

于 2009-10-05T12:10:53.157 に答える