我有一個$html
變量包含大量的html代碼,我試圖從輸入中提取某個參數(可以是值,或類等)的值字段基於它的id。來自輸入字段的正則表達式
我試圖找到代碼的一個例子:
<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="[email protected]" class="txt-box txtbox-m " aria-describedby="" aria-required="true" disabled="disabled" />
我試圖構建提取值([email protected]
)出來的一個正則表達式,告訴它找出來的價值<input>
其中id="emailaddress"
- 在輸入和id之間以及id和value之間使用通配符(唯一可以確定的是輸入在id之前,這是值之前)。
這裏是我當前的PHP代碼(使用preg_match_all因爲它應該成爲我能在那裏有幾個字段的情況下重用一個函數):
$pattern = '<input(.*)id="emailaddress"(.*)value="(.*?)"';
preg_match_all('/'.$pattern.'/si',$html,$matches);
我一直在努力改變,但是我要麼得到的第一個輸入字段或不匹配。任何幫助歡迎!提前致謝。
謝謝!我需要包含id =「emailaddress」,因爲我正在通過包含許多輸入字段的$ html進行搜索,並且需要將其限制在正確的輸入字段。也有可能只獲得在$匹配而不是幾行中返回的值字段? – Davor
剛剛編輯了搜索id =「emailaddress」值的答案。現在應該是好的。這種模式和preg_match的工作方式是,您看到的每個()模式都將是數組索引之一。在這種情況下,您總是會說$ matches [index] [3]是電子郵件地址。 – Rottingham
是的,現在起作用了 - 唯一的改進是$匹配包含5行,其中只有一個是值本身,所以我需要循環遍歷它們,只選擇具有'@'的那一個沒有'''。是否有可能使它只有值匹配返回? – Davor