0
我試圖從this page接收<tbody>
標記的內容。preg_match_all不能使用html標記
只有一個表只有一個標籤<tbody>
,我想從該表中獲取所有行
我試圖通過這種方式
$page = file_get_contents('http://pk.zntu.edu.ua/fakultety-ta-napryamy-pidhotovky/derzhavne-zamovlennya-2011-bakalavr');
preg_match_all("/<tbody>(.+?)<\/tbody>/is", $page, $output_array);
var_dump($output_array);
做到這一點,我得到空數組:
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
我曾嘗試的圖案不同的變體等
- 「
/<tbody>(.*?)<\/tbody>/is
」 - 「
/<tbody>.+?<\/tbody>/is
」 - 「
/<tbody>.*?<\/tbody>/is
」 - 「
/<tbody>.+<\/tbody>/is
」 - 「
/<tbody>.*<\/tbody>/is
」
但是,沒有一個工作
隨着PCRE和正則表達式庫中的所有應該沒問題
我不知道是什麼問題,請幫忙
將「tbody」標籤的內容包含在問題中提取的源文件中。 – user2268997
'/
] *>(。*?)<\/tbody>/is' –「嘗試不同的變體」基本上只是猜測。 *編程時不要這樣做。這是一個可怕的方法。理解你想做什麼,將其分解成幾個步驟,理解語法的含義,然後弄清楚如何用語法表達你的意圖,最後對它進行測試。 –
回答
你的模式很簡單,上面的
regex
應該沒問題。但我認爲問題來自file_get_contents
。我只是嘗試計數$page
可變的行數和我得到這個但後來,我通過點擊進入該網站查閱和複製源代碼的實際代碼手工算吧,它是關於
1787
線。這是什麼意思?
這可能意味着您將其存儲在
$page
變量中的代碼與手動點擊該網站時看到的HTML代碼不同。實際上,當您打開一個網站時,可能會發生很多事情,例如偵聽器方法正在工作,但是如果您將這些源代碼直接下載到PHP變量,某些方法可能永遠不會執行,這會讓您獲得不完整的HTML代碼。請注意,支持我的假設的另一個證據是,我甚至無法在您的
$page
變量中找到關鍵字tbody
。來源
2015-08-22 17:42:58 fronthem
tbody
標記也可能包含屬性。因此,您需要匹配這些屬性才能獲取tbody
標籤的內容。來源
2015-08-22 12:32:51
相關問題