コメントの中で言及されているように、正規表現でHTMLから物を抽出しようとするのは、通常はお勧めできません。さらに防弾対策に切り替えたい場合は、DOMDocument APIを使用して簡単に情報を抽出する方法の簡単な例をここに示します。
一つだけ
vboxview
あなたの入力でもあるように保証されている場合はいっそのこと、あなたが
vboxview
に
id
属性を追加し、ダウン短く、より一般にコードを切ることができる(また、あなたがHTMLのコントロールを持っていると仮定)
<?php
function get_vboxview($html) {
$output = array();
// Create a new DOM object
$doc = new DOMDocument;
// load a string in as html
$doc->loadHTML($html);
// create a new Xpath object to query the document with
$xpath = new DOMXPath($doc);
// an xpath query that looks for a vboxview node anywhere in the DOM
// with an attribute named leftinset set to 10, an attribute named rightinset
// set to 0 and an attribute named stretchiness set to 1
$query = '//vboxview[@leftinset=10 and @rightinset=0 and @stretchiness=1]';
// query the document
$matches = $xpath->query($query);
// loop through each matching node
// and the textContent to the output
foreach ($matches as $m) {
$output[] = $m->textContent;
}
return $output;
}
?>
関数。
<?php
function get_node_text($html, $id) {
// Create a new DOM object
$doc = new DOMDocument;
// load a string in as html
$doc->loadHTML($html);
// return the textContent of the node with the id $id
return $doc->getElementById($id)->textContent;
}
?>
XMLパーサを使用します。 Regexexは、XMLやHTMLを解析するためのものではありません。 – Cfreak
okですが、preg_match_allは何のために使用されますか? php.net上では実際にhtmlを解析する例を示しているからです。 –
@AhouraGhotbi - はい、それは悪い例です、彼らはそれを変更する必要があります。正規表現は、パターンを持つデータを解析するためのものです。定義によるXMLとHTMLは構造化されていません。あなたはそれらを解析するために正規表現を使うことができますが、ファイルが特定の方法で構造化される必要はないので、良い考えではありません。言い換えれば、誰かがあなたの仕様に合ったXMLファイルを与えたとしても、あなたのプログラムが壊れる危険性が高いからです。 – Cfreak