2015-10-28 33 views
-1

我的代碼應該返回一個包含天氣彙總的數組,但不包含。爲什麼PHP正則表達式不返回數組?

我該如何做這項工作?

這是當然,我承擔Udemy.com的一部分;我的代碼完全符合我的指導者,但不會返回相同的結果。

我沒有找到任何語法錯誤所以有別的東西,我丟失或nescient的..

$contents=file_get_contents("http://www.weather-forecast.com/locations/San-Francisco/forecasts/latest"); 

preg_match('3 Day Weather Forecast Summary:<\/b><span class="phrase">(.*?)</s', $contents, $matches); 

print_r($matches); 
+3

如果我們需要幫助,您需要向我們顯示您的php代碼。 – danjam

+0

「文件」的內容可能已經改變了格式,這會使你試圖提取天氣信息的方式變得不再可用。你被告知如何做的就是所謂的屏幕抓取,當它不是你的網站或內容的時候,它會相當皺眉。可能建議你要求退款並開始不同的課程=/ – Relequestual

+0

在他的具體示例中,他向我們展示瞭如何製作颳風機;不是爲了以邪惡的方式使用它;只是教我們的PHP和正則表達式。至於退款,我已經考慮過了,但我是那種喜歡完成我開始的人的人。另外,現在,我買不起另一門課程。我已經將大部分資金投入到軟件和課程中,並且打賭農場能夠學習這些材料併爲此做出事業。謝謝您的回覆,但 – Veniversum

回答

0

你得周圍添加您正則表達式的一些分隔符從單獨它(可能)修飾符。 你可以使用任何字符你想要的 - 即/ - 但你用你的正則表達式這裏面的字符會也許會更易於使用不同的東西像~

$contents=file_get_contents("http://www.weather-forecast.com/locations/San-Francisco/forecasts/latest"); 

preg_match('~3 Day Weather Forecast Summary:<\/b><span class="phrase">(.*?)</s~', $contents, $matches); 

print_r($matches); 

只是測試你的正則表達式代字號並將其看來,頁面的html與您的表達不匹配。我稍微修改它如下:

3 Day Weather Forecast Summary:<\/b>.*?<span class="phrase">([^<]+) 
+0

指導員告訴我們使用(。*?)找到兩個短語之間的內容 – Veniversum

+0

我找到了一個修復程序;顯然這個網站在教師創建視頻後進行了更新,我需要將這個短語改爲:(。*?)(。*?) <\/span/s'爲了使它工作。感謝所有努力幫助我解決這個問題的人。我感謝你的時間和精力。 – Veniversum

+0

@Veniversum你測試了我的解決方案嗎?我做了,而且工作。你只是聽說在代碼中使用正則表達式並在其周圍添加波形。 – Philipp

相關問題