2011-08-08 2 views
0

웹 사이트 URL에 "="또는 "?"기호가 있는지 확인하는 코드를 작성하려고합니다. URL에PHP 정규식을 찾으십니까? 또는 =가 작동하지 않습니다.

나는 발견한다 $ 웹 사이트 (예를 들어 www.smith.com?page=1)의 URL을 가지고 있지만 그냥 일치하는 경우 다음과 같은 코드

$cleanurl_text = "You appear to have a clean url structure."; 


$regex = '/=/i'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
$regex = '/?/i'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
+0

downvoter에게, 왜 이것이 downvote 자격이 있다고 생각하는지 설명해주십시오. –

답변

1

당신은 어쨌든이 있지만 더 http://php.net/manual/en/function.strstr.php

에 대한 정규식을 사용하지 말아야합니다 - 복잡한 (틱) 문자열 표현을 하위 문자열 검색을 사용하여 표현하는 것이 지루할 것입니다.

if (strpos($website, '=') !== FALSE) { 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 

정규식 패턴을 컴파일하는 바와 같이, 정규식 상태 엔진이 초기화, 상대적으로 무거운 시작 비용이 등 : 당신이하고있는 등 하나의 문자를 들어, 할 훨씬 더 효율적입니다 ... 단 하나의 성격을 찾는 것입니다. 상대적으로 strpos는 "자유"일 것입니다.

+2

"건초 더미에서 특정 바늘이 발생하는지 확인하고 싶다면, 더 빠르고 메모리가 적은 함수 인'strpos()'를 대신 사용하십시오." – Qtax

4

에없는 상수 하나의 문자, 정규식은 최선의 방법이 아닙니다. 보다 효율적인 정규 표현식은 /=|\?/이며 = 또는 ?을 테스트합니다. 표현이 작동하지 않는 이유는 ?이 이스케이프 처리해야하는 문자이기 때문입니다. 정규 표현식 here에 대해 학습 할 수 있습니다.

+3

'='이스케이프가 필요없고 '/ i'도 필요하지 않습니다. – Qtax

+0

@Qtax - 네가 맞아, 내가 뭘 생각하는지 모르겠다. 그리고'i'에 대한 좋은 지적은 무의식 중에 그것을 남겼습니다. – dlras2

0

백 슬래시를 사용하여 이러한 문자를 이스케이프 처리해야합니다. 당신은 여전히 ​​패턴입니다 당신의 정규식이

$regex = '/=|\?/'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
+0

'='를 이스케이프 할 필요는 없습니다. –

0

정규 표현식에 같은 뭔가해야 원하는 경우

관련 문제