2011-10-15 93 views
0

我可以在preg_match_all函數中使用一些花哨的語法來建立當時的新$匹配變量,而不是像我之前做的那樣事先做這些事情?有沒有辦法在不首先聲明變量的情況下使用preg_match_all?

$matches = ''; 
preg_match_all('/[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}/', file_get_contents($eFetchURL), $matches); 

在此先感謝您的幫助!

+0

找到更多的信息,它通常是很好的做法,你使用它們(即使在情況下,它可能沒有必要)之前聲明變量。 – Spudley

+0

初始化時,應將其初始化爲'array()',因爲它將在以後變成數組。 – TimWolla

回答

4

是的,即此:

preg_match_all('/[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}/', file_get_contents($eFetchURL), $matches); 

以在PHP一個不存在變量的引用不是一個錯誤。相反,PHP會自動爲您定義變量並將其定義爲NULL。

+1

+1好答案。還有一點需要注意:正如@Juhana在另一條評論中指出的那樣:「......變量_作爲reference_passed_不會發出通知......」 – Herbert

0

不聲明變量會拋出E_NOTICE。取決於php.ini或運行時配置,使用error_reporting函數,異常可能會被忽略。

好的做法是在開發環境中啓用E_STRICT模式。

注:

在開發階段啓用E_NOTICE會有一些好處。出於調試目的:通知消息會警告您代碼中可能存在的錯誤。例如,警告使用未分配的值。找到錯別字並節省調試時間非常有用。通知消息將警告您不良風格。例如,$ arr [item]最好寫成$ arr ['item'],因爲PHP試圖將「item」視爲常量。如果它不是一個常量,PHP會假定它是數組的字符串索引。

注:

在PHP 5中新的錯誤級別E_STRICT是可用的。由於E_STRICT不包含在E_ALL中,所以您必須明確地啓用這種錯誤級別。在開發過程中啓用E_STRICT有一些好處。 STRICT消息將幫助您使用最新最好的建議編碼方法,例如警告您使用棄用的函數。

可以在

http://php.net/manual/en/errorfunc.configuration.php

+2

除作爲參考傳遞的變量不會在任何錯誤報告級別下發出通知。 – JJJ

相關問題