2011-10-15 4 views
0

preg_match_all 함수 내에서 그 전에 새로운 $ matches 변수를 설정하는 데 사용할 수있는 멋진 구문이 있습니까?변수를 먼저 선언하지 않고 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가 다른 주석에서 지적한 바와 같이 "... 변수가 참조로 전달됨 _ 통지를 보내지 않음 ..." – Herbert

0

변수를 선언하지 않으면 E_NOTICE가 발생합니다. php.ini 또는 런타임 구성에 따라 error_reporting 함수를 사용하면 예외가 생략되거나 생략 될 수 있습니다.

개발 환경에서 E_STRICT 모드를 활성화하는 것이 좋습니다.

참고 :

개발하는 동안 E_NOTICE 활성화는 몇 가지 장점이 있습니다. 디버깅 목적으로 :주의 메시지는 코드에서 발생할 수있는 버그에 대해 경고합니다. 예를 들어 할당되지 않은 값의 사용에는 경고가 표시됩니다. 오타를 찾아 디버깅 시간을 절약하는 것이 매우 유용합니다. 알림 메시지는 나쁜 스타일에 대해 경고합니다. 예를 들어, PHP는 "item"을 상수로 취급하기 때문에 $ arr [item]은 $ arr [ 'item']로 작성하는 것이 더 좋습니다. 상수가 아니면 PHP는 배열의 문자열 인덱스라고 가정합니다.

참고 :

PHP 5에서는 새로운 에러 레벨 E_STRICT를 사용할 수 있습니다. E_ALL 안에 E_STRICT가 포함되어 있지 않으므로이 종류의 오류 수준을 명시 적으로 활성화해야합니다. 개발 중에 E_STRICT를 활성화하면 몇 가지 이점이 있습니다. STRICT 메시지는 가장 최근에 제안 된 코딩 방법을 사용하는 데 도움이됩니다 (예 : 사용되지 않는 기능 사용에 대해 경고).

당신은 그것은 당신이 (심지어는 필요하지 않을 경우)를 사용하기 전에 변수를 선언하기 위해 일반적으로 좋은 연습입니다

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

+2

변수가 참조로 전달된다는 점을 제외하고는 오류보고 수준 . – JJJ

관련 문제