답변
이 같은 소리를 알맞은 사용의 parse_url()
:
<?php
$blacklist = array("asdf.com", "fun.com", "url.com");
$input = "http://asdf.com/asdf/1234/";
$url = parse_url($input);
echo (in_array($url['host'], $blacklist) ? '(FAIL)' : '(PASS)') . $url ['host'];
?>
출력 :
(FAIL)asdf.com
한 가지 방법 : 입력이 블랙리스트에서 임의의 문자열을 포함하지 않는
$san = preg_replace($blacklist, '', $input);
if($san !== $input) {
//contained something from the blacklist
}
경우, 문자열이 변경되지 반환됩니다.
는 다른, 어쩌면 더 적합 확실히 더 효율적인 접근 방법은 extract the host part from the input로하고 연관 배열로 블랙리스트 만들 수 있습니다
$blacklist = array(
"asdf.com" => true,
"fun.com" => true,
"url.com" => true
);
그런 다음 테스트가 될 것 O(1)
과 :
if($blacklist[$host]) {
//contained something from the blacklist
}
foreach 문을 사용하면 아마 당신이 달성하려고하는지에 가장 적합한 솔루션입니다.
$blacklist = array("/asdf\.com/", "/fun\.com/", "/url\.com/");
foreach($blacklist as $bl) {
if (preg_match($bl, $input)){return true;}
}
in_array는 정확한 문자열을 검색 할 때 유용하지 않습니다.
당신은 배열을 통해 루프를 가지고 있고, 그것이
foreach($str in $blacklist)
{
if(stristr($input, $str))
{
//found
}
}
히트를 얻으면 불필요한 테스트를 피하기 위해'break'를 사용해야합니다 ... –
이 코드는 작동합니다 검색 :
$blacklist = array("asdf.com", "fun.com", "url.com");
$input = "http://asdf.com/asdf/1234/";
if (in_array(parse_url($input,PHP_URL_HOST),$blacklist))
{
// The website is in the blacklist.
}
어떤 것이 @ jnpcl의 대답과 근본적으로 같습니다. 답변을 복제 할 필요가 없습니다 ... -1. –
- 1. 내가 배열을 가지고 배열
- 2. 배열을 포징하고 일치 시키는가?
- 3. 내가 배열을 예를 들어 배열
- 4. IE 및 문자열 일치
- 5. 안드로이드 배열 - 문자열 패턴을 사용하여 배열을 참조하십시오.
- 6. 예기치 않은 배열 값은
- 7. 문자열 배열 대신 char 배열 배열을 사용하는 함수 자르기
- 8. java에서 문자열 일치 작업
- 9. 변환 문자열 배열 내가 정수 배열로 내 문자열 배열을 변환하는 쉬운 방법을 알아낼 수 있기 때문에
- 10. 복잡한 매핑은 내가 문자열 배열을 가지고 루비
- 11. 문자열 C++ 내가 배열을 숯불에 정수를 변환하려고
- 12. 주어진 문자열의 패턴을 일치 시켜서 문자열 배열 얻기
- 13. 얼랭의 문자열 정규식 일치
- 14. 자바 문자열 일치 문제
- 15. mySQL 문자열 일치
- 16. 문자열 일치 문제
- 17. VB.NET 문자열 배열 초기화
- 18. 스칼라의 문자열 배열 문제
- 19. 문자열 배열을 함수로 전달
- 20. struts 문자열 배열 순서
- 21. PhP/MySQL의 일치 문자열
- 22. 파이썬 문자열 일치
- 23. 파이썬 정규식 문자열 일치?
- 24. 와일드 카드 문자열 일치
- 25. 문자열 일치 알고리즘
- 26. Ruby에서 대략적인 문자열 일치
- 27. 문자열 배열
- 28. jmx 패스 문자열 배열
- 29. 정렬 문자열 배열
- 30. SQL 쿼리의 배열 값은 무엇입니까?
을 당신은 내가 코멘트없이 표를 얼마나 싫어하는지 모르나요? 내 진노를 두려워하라! –
@KingCrunch : 예. 첫 번째 것은 다소 해킹입니다. 두 번째 부분에 대해서 : PHP의 배열은 정렬 된 맵이며, 목록도 집합도 아닙니다. 'in_array'는 선형 검색을 수행해야하기 때문에 항상 느려집니다. 이것은 작은 배열에도 적용되지 않습니다 ... –
배열은 맵으로뿐만 아니라 해시 맵으로 구현됩니다. 그러나, 그들은 상황에 따라 다르게 취급 될 수 있습니다. 예를 들어 배열을 집합, 목록, 스택, 대기열 등으로 사용할 수 있습니다. 그것의 단지 여기에 이름을 짓고 구현과 많은 관련이 없습니다. 그리고'in_array()'에 대해 : Clean code> 마이크로 최적화 – KingCrunch