2012-02-07 2 views
0

웹 사이트 주소가 긴 목록이 있습니다. 그러나 나는 그것들을 걸러 내고 "abcd"부분 만 가져야한다. 내 잘라 내기/붙여 넣기/알고리즘에서 나는 매우 무작위 형식의 웹 사이트를 처리하고, 큰 목록을 다루는 것은 매우 많은 시간을 소모하는 것과 같습니다.ZendFramework - 웹 사이트에서 제거 할 TLD의 모든 목록을 얻는 방법?

예 : Zend_Filter 내가 단말은 앞 꼬리 절단, 항상 "ABCD"의 중간 부분을 얻을 어린 아이 수

www.abcd.tld.tld.tld to abcd 
http://www.abcd.tld.tdl to abcd 
abcd.tld to abcd 
abcd.tld.tld to abcd 
http://abcd.tld to abcd 
http://abcd.tld.tld to abcd 

. 아니면 이것을 할 수있는 PHP 내장 함수가 있습니까?

+2

추출 할 부분이 나에게 완전히 무작위로 보입니다. 추출 할 규칙을 명확하게 할 수 있습니다. – Gordon

+0

네, 그게 제가 가진 문제입니다. 나는 DOT에서 나뉘었지만, 그렇게 무작위 적이기 때문에 최종 알고리즘으로 넣을 수는 없다. – YumYumYum

+1

흠,'http : // http.abcd.tld.tld'. 'http : // static.abcd.tld'. 또는'http : // totalawesomerandomness.abcd.tld'? – Wrikken

답변

1

PHP에서 몇 가지 기본 문자열 함수로이 작업을 수행 할 수 있습니다. 문자열 변수에 모든 URL을로드하고 당신을 위해 간단한 str_replace

$old_urls; // load your urls into this variable 
$search = array('http://','https://','www.','.com','.net','.us','.org','.edu','.us'); // etc, add more tlds 
$new_urls = str_replace($search,'',$old_urls); 

겠습니까이 일을합니까?

+0

OK - 그 논리는 괜찮아. 하지만 .tld.tld가있는 사이트가 많이 있습니다. 그래서 당신이 말하는 것은 모든 TLD를 모으고 어레이를 만드는 것입니다. – YumYumYum

+1

물론, 배열에 더 많은 요소,'. 'tld', '. tld2'' ...를 추가하여 코드의'$ search' 배열을 확장 할 수 있습니다. 그것은 확실히 당신이 찾고있는 일에 대한 끔찍하고 더러운 해결책이지만, 당신이 일하는 모든 .tld를 배치 한 후에는 잘 작동 할 것입니다. – Markus

1

preg_match('_https?://([a-z0-9-])\..*_i', $original_url, $matches); 잘 해줘야합니다. $matches[1]은 이제 http(s):// 다음 첫 번째 섹션을 포함하고 첫 번째 섹션은 .입니다.

관련 문제