0

html文書から以下のメタタグから型番を探したい

<meta name="description" content="Model AB-1234. Model description here" />

型番だけを合わせたい(AB-1234)。私はいくつかのことを試しましたが、以下に2つ含めます。

preg_match('/<meta name="description" content="\bmodel\b(.*)"/i', $html, $model);

こいつは返すAB-1234. Model description here

================================================== ================================

preg_match('/<meta name="description" content="(.*)"/i', $html, $model);

そして、これは次を返します:Model AB-1234. Model description here

おそらくそれを行う1つの方法は、.(ドット)で停止することですが、それにアプローチする方法がわかりません。

ありがとうございました、

4

3 に答える 3

1
$str = '<meta name="description" content="Model AA-1234. Model description here" />

<meta name="description" content="Model AB-1234. Model description here" />

<meta name="description" content="Model AC-1234. Model description here" />

<meta name="description" content="Model AD-1234. Model description here" />
';

preg_match_all('/content="Model (.*?)\./is', $str, $data);
if(!empty($data[1])){
$models = $data[1];
print_r($models);
}

// 結果

Array ( [0] => AA-1234 [1] => AB-1234 [2] => AC-1234 [3] => AD-1234 )
于 2013-06-13T16:24:50.923 に答える
1
preg_match('/<meta name="description" content="model\s+([^.]*)"/i', $html, $model);

一般に、正確なレイアウトに非常に敏感であるため、HTML の解析に regexp を使用しないことをお勧めします。DOM 解析ライブラリを使用することをお勧めします。content属性を抽出すると、正規表現を使用してその一部を抽出できます。

于 2013-06-13T16:21:16.323 に答える