2011-06-27 43 views
0

我正在處理包含HTML標記的文件。php得到選擇的選項

我需要從下拉框中選擇選項。在這種情況下,澳大利亞是所選擇的選項..

<select name="cCountry" id="cCountry" style="width:200" tabindex="5"> 

    <option value="251">Ascension Island</option> 
    <option selected="selected" value="14">Australia</option> 
    <option value="13">Austria</option> 

另一種情形:

<select name="cBirthYearM" id="cBirthYearM"> 
<option value="1974">1974</option> 
<option value="1975">1975</option> 
<option value="1976">1976</option> 
<option selected="selected" value="1977">1977</option> 
<option value="1978">1978</option> 
<option value="1979">1979</option> 

在這種情況下,「1977" 年是,我需要提取,因爲它是所選擇的選項的值 之作。它清楚我需要從標記中獲取價值而不是來自用戶GET/POST輸入

+1

爲什麼使用正則表達式,而不是'DOMDocument'? – k102

+0

如果您的意思是要獲取用戶在表單中提交的值,或者將值從標記中提取出來,則您的問題沒有說清楚。請澄清。 – GordonM

+0

@GordonM該值已被選中。仔細檢查並看到澳大利亞是「選項selected =」已選中「 – Michael

回答

3

該選項的值部分中指定的值將在$_GET ['cCountry']$_POST ['cCountry'](取決於如果您使用GET或POST來su bmit表格)。

查找查找表或數據庫查詢的值應該很簡單。

編輯:這個問題沒有說清楚,如果你的意思是如何獲得用戶在表單提交時選擇的值,或者如何從標記中獲得值。如果是後者,那麼你應該看看DOMDocument

+0

hm ......如果用戶將更改他的選擇? – k102

+0

該值已被選中。請仔細檢查並查看澳大利亞是否」選項selected =「已選中」。我試圖從具有不同選擇的不同文件中選擇。更多的數據提取/爬行器比用戶使用的網絡應用程序 – Michael

+0

@bazmegakapa我沒有使用POST或GET請求。我正在抓取文件,我需要提取選定的值。在上述情況下選擇「澳大利亞」。 – Michael

1

如果你想在PHP中解析HTML,那麼首選的方法是對象的DOM層次結構,特別是DOMDocument。您可以使用類似Javascript的訪問DOM樹的方法(如getElementById)來獲取選擇控件(在本例中爲getElementById ('cCountry')),然後檢查其子項(選項)以找到所選控件並獲取其屬性。

它可能需要一點時間來習慣使用DOM對象,但它們比正則表達式更強大的解析和操作HTML,所以它們非常值得學習。

+1

+1爲HTML解析DOM是要走的路,在這裏使用正則表達式只會殺死可愛的動物,摧毀地球上的幸福,並創造混亂 – kapa