1

多く$htmlの html コードを含む変数があり、ID に基づいて入力フィールドから特定のパラメーター (値やクラスなど) から値を抽出しようとしています。

私が見つけようとしているコードの例:

<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="fname.lname@gmail.com" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled" />

入力とIDの間、およびIDと値の間のワイルドカードを使用して、すべての場所fname.lname@gmail.comから値を見つけるように指示することにより、値()を抽出する正規表現を構築しようとしています(確かなことは、入力は値の前にあるidの前です)。<input>id="emailaddress"

これが私の現在のPHPコードです(複数のフィールドがある場合に再利用できる関数になるはずなので、preg_match_allを使用しています):

$pattern = '<input(.*)id="emailaddress"(.*)value="(.*?)"';
preg_match_all('/'.$pattern.'/si',$html,$matches);

バリエーションを試してみましたが、最初の入力フィールドを取得するか、一致しません。どんな助けでも大歓迎です! 前もって感謝します。

4

2 に答える 2

3

値だけを取得したい場合は、これを試してください:

$string = '<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="fname.lname@gmail.com" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled" />';

$pattern = '/<input(?:.*?)id=\"emailaddress\"(?:.*)value=\"([^"]+).*>/i';

preg_match($pattern, $string, $matches);
var_dump( $matches[1] );
于 2014-08-06T09:40:13.727 に答える
2

かなり単純なものにする必要があります

$string = '<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="fname.lname@gmail.com" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled" />';

$pattern = '/<input(.*?)id=\"emailaddress\"(.*)value=\"(.*?)\"/i';
preg_match_all($pattern, $string, $matches);
var_dump($matches);

それは私に与えます:

array (size=4)
    0 => 
        array (size=1)
            0 => string '<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="fname.lname@gmail.com"' (length=126)
    1 => 
        array (size=1)
            0 => string ' type="text" autocomplete="" name="confirmedEmailAddress" ' (length=58)
    2 => 
        array (size=1)
            0 => string ' maxlength="60" ' (length=16)
    3 => 
        array (size=1)
            0 => string 'fname.lname@gmail.com' (length=21)
于 2013-10-18T21:59:00.377 に答える