0

私の質問はduplicate(duplicate)のように見えます...しかし、例外的に、「True / Valid」HTML、そのjavascript変数/またはHTMLタグの一部を解析しようとはしていません。私の例を参照してください。

                <td width="10"></td>
            <td ><div id="combo_rub" style="CURSOR:pointer"></div><input type="hidden" id="rech_cod_cat"  name="rech_cod_cat" value="1"/></td>
            <td ><div id="combo_typ" style="CURSOR:pointer"></div></td>
            <td ><div id="combo_sou_typ" style="CURSOR:pointer"></div></td>

            <script type="text/javascript">
            d_rech_cod_rub       = "101";
            d_rech_cod_typ       = "1";
            d_rech_cod_sou_typ   = "1020121";

            //ComboBox sous_type
            var z_sou_typ=new dhtmlXCombo("combo_sou_typ","rech_cod_sou_typ",160);

だから私が私のコードPHPに欲しいのは、あなたが見ることができるようにHTMLからではなく、Javascript部分から(、、)の値を取得することですd_rech_cod_rub...d_rech_cod_typd_rech_cod_sou_typ

2番目のシナリオは次のとおりです。

<td><a href="AnnoncesImmobilier.asp?rech_cod_rub=101&amp;rech_cod_typ=1">
<font color="#2154eb">Location (6920)</font></a> </td></tr></table></td></tr>
<tr><td><table width="100%" cellpadding="0" cellspacing="0"><tr>   
<td><a href="AnnoncesImmobilier.asp?rech_cod_rub=101&amp;rech_cod_typ=5"></td>      

ここでも同じですが、「101」の値を取得する必要があります。

最後に、完全なストーリー:PHPのCurl拡張機能を頻繁に使用していると、上記の例のようなコンテンツに出くわします...問題は、(http://simplehtmldom.sourceforgeのようなHTMLパーサーを使用する場合です。 .net /)有効なHTMLでのみ機能するため、これで作業を行うことはできません。..:(私の質問:安定した方法で値を取得するための解決策はありますか?私のような場合?

みんなありがとう。

編集:ほとんどの回答によると、RegXを使用してトリックを行います...

4

4 に答える 4

2

その値だけが必要な場合は、そのためだけに正規表現を使用するのは非常に簡単です。

d_rech_cod_rub\s*=\s*"([0-9]+)";

最初のキャプチャグループはあなたの価値です。

于 2012-08-24T13:37:44.457 に答える
2

次の正規表現はトリックを行います

d_rech_cod_[a-z_ ]*= "([0-9]*)";
rech_cod_rub=([0-9]*)

PHPについてはよくわかりませんが、次のコードを使用して評価できる可能性があります。

preg_match($regex, $content, $matches);
print($matches[1]);
于 2012-08-24T13:38:17.313 に答える
2

より具体的な答えでは、正規表現はネストされた情報を処理できません。

例えば ​​...

<span>Hello <span>World</span></span>

を探す正規表現は次を<span>.*<\/span>返します。

<span>Hello <span>World</span>

タグが欠落している無効なHTMLを処理しようとすることについても言及しません。

代わりに、この(loadHTMLのようなものが必要な場合があります。

于 2012-08-24T13:40:26.777 に答える
1

1つの正規表現で目的の処理が可能かどうかはわかりませんが、変数ごとに1つの正規表現で実行できることは確かです。また、strpos関数を使用して文字列を解析することもできます。ここでは、2番目のアプローチがおそらくより効率的な方法になります。

于 2012-08-24T13:36:30.247 に答える