"domain.com/file/"이 포함 된 문자열 이외의 모든 것을 일치시키는 정규식을 작성하려고합니다.문자열을 제외한 모든 것을 검사하는 정규식
그래서 URL이 주어지면 "domain.com/file/"이 포함되지 않도록하고 싶습니다.
나는 이것이 매우 쉽다는 것을 안다. 그러나 나는 정규 표현식에 멍청하다.
"domain.com/file/"이 포함 된 문자열 이외의 모든 것을 일치시키는 정규식을 작성하려고합니다.문자열을 제외한 모든 것을 검사하는 정규식
그래서 URL이 주어지면 "domain.com/file/"이 포함되지 않도록하고 싶습니다.
나는 이것이 매우 쉽다는 것을 안다. 그러나 나는 정규 표현식에 멍청하다.
그냥 사용하십시오! 정규식
$pattern = '#!domain\.com/file/#';
if(preg_match($pattern,$data)){
}
에서 NOT 연산자 대신 정규 표현식이에 대한 strstr
를 사용할 수 있습니다. 이름이 잘못 지정되었지만 문자열을 찾지 못하면 false
을 반환합니다. 문자열에 truthy 값이 있으므로 ==
대신 ===
을 사용해야합니다.
질문이 구체적이지 않은 경우를 제외하고는 정규식을 사용할 필요가 없습니다.
몇 가지를 검토 한 결과 strpos
은 실제로 strstr
보다 빠릅니다.이 기능을 사용하려면 ==
대신 ===
을 사용해야합니다. PHP는 워드 프로세서에서 strpos
의
예 :
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
대소 문자를 구별 일치를 사용하여 예 :
if (stristr($input, 'domain.com/file/') === false) {
// not found.
}
또한 regex 질문에 대답하려면, 당신은 그에 대한 (?!...)
negative assertion을 사용할 수 있습니다 용도 :
if (preg_match("~(?!.*domain.com/file/)~", $string))
다른 비교와 결합하면이 의미가 있습니다. preg_match
결과를 모두 무효로하는 것이 더 합리적인 것입니다.
이것은'.htaccess' RewriteRule에서 작동하지만 '!'만으로는 정규 표현식에 아무런 의미가 없습니다. – mario