2012-04-06 5 views
1

클라이언트가 있습니다. 도메인이 www.mydomain.com이라고 가정 해 보겠습니다.PHP preg_match는 항상 false를 반환합니다.

www.mydomain.com/newsection에서 새 페이지를 만듭니다.

/newsection 페이지에서 클라이언트는 이전에 메인 사이트에 있었던 경우에만 "메인 사이트로 돌아 가기"(www.mydomain.com) 링크를 추가하려고합니다.

<?php 
$referral = $_SERVER['HTTP_REFERER']; 
if (preg_match('/http://www.mydomain.com/', $referral)) { 
echo "from My Domain"; 
} else { 
echo "not from My Domain"; 
} 
?> 

그러나이 항상 false를 돌려줍니다 ("내 도메인에서 수 없음"), 사용자가 mydomain.com에서 오는 경우에도 :

그래서,이 같은 PHP의 코드를 설정합니다.

명백한 구문 오류 또는 다른 논리 문제가 있습니까?

내 새 페이지 (www.mydomain.com/newsection)가 여전히 기본 도메인에있는 문제입니까?

+1

'error_reporting'을 활성화하면 오류가 분명 해집니다. – mario

+0

가능한 복제본 [preg_match로 변환 - 알 수없는 수정 자 'F'는 무엇입니까?] (http://stackoverflow.com/questions/3451787/convert-eregi-to-preg-match-what-is-unknown-modifier- f) – mario

답변

2

식의 슬래시는 구분 기호이기 때문에 이스케이프 처리해야합니다. 또는, 다른 구분 기호를 선택할 수 있습니다

preg_match('~http://www\.mydomain\.com~', $referral) 

참고 또한 정규 표현식에서 특수 문자 인 .들, 탈출했다. 그들은 정규식을 깰 수는 없지만, 어떤 성격과도 일치합니다. 아마도 당신이 원하는 것은 아닙니다. 개발할 때

+0

감사합니다. 아마 그게 그럴 줄 알았지 만 그걸 알아낼 수 없었어. 정말 고맙습니다. – Ash

1

당신은 error_reporting은에 strpos

if (strpos($referral, 'http://www.mydomain.com') !== false) { 
+0

감사합니다. 좋은 해결책입니다! – Ash

0

의 전원을 켜고 사용할 수 있습니다. 당신은 실제로 당신을 도움이 다음과 같은 경고, 같은 것을 받고있어 (특히 minitech의 대답과 함께) :

경고 :는 preg_match() [function.preg 경기] : 알 수없는 수정 '/'

+0

팁 주셔서 감사! 나는 확실히 그것을 할 것이다. :) – Ash

관련 문제