2011-04-19 2 views
2

사용자가 rss URL을 'return'또는 한 줄에 각 URL로 구분하여 입력하는 텍스트 상자 사용자 프로필 영역이 있습니다. 그런 다음 데이터베이스에 저장됩니다. 이제 배열에서 모든 URL을 가져 오는 방법은 무엇입니까?문자열과 URL을 분리 하시겠습니까?

매우 기본적인 질문입니다. 웹을 검색하여 많은 것을 발견하고 혼란스러워했습니다. 어떻게하면 작은 토론이 도움이 될 것이라고 생각합니다.

사용자가 http : // URL을 넣지 않아도 코드가 추가하는 것과 같은 유효성 검사를 원합니다. http : // protocols가 아닌 다른 URL은 무시하십시오.

내 CMS는 나를 알려주는 기능이 내장되어 있다면 Wordpress입니다.

답변

4

폭발 기능을 사용하면 당신은 당신이 정규식이 너무 복잡하면 정말 권하고 싶습니다하지만 (당신의 기술 수준에 따라

$urlArray = explode("\r", $_POST["textBox"]) 
if(!empty($urlArray)) 
{ 
    foreach($urlArray as $url) 
    { 
     //Do your regex checking here 
    } 
} 

찾고있는 검증을 할 수있는 foreach 문을 수행 할 수 있습니다 그것을 배우면) 당신은 substr을 사용하여 각각의 html 줄을 평가할 수 있습니다.하지만 이것은 훨씬 덜 강력한 버전입니다. 예제는 다음과 같습니다

$htmlString = substr($url, 0, 7); 
if($htmlString != "http://") 
{ 
    $url = "http://" . $url; 
} 
+0

좋은 생각; 귀하의 응답은 답변을 완료합니다. :) – KTF

+0

어디에서 RegEx를 배울 수 있습니까? – Sisir

+0

특정 멋진 사이트는 모르지만 기본 Google 검색은 RegEx 튜토리얼을위한 몇 가지 자료를 제공 할 수 있어야합니다. RegEx는 정규식의 약자입니다. PHP를위한 preg_match 함수를 검색하여 PHP 코드에 정규 표현식을 구현하는 방법을 살펴보고 정규식을 배우려면 http://gnosis.cx/publish/programming/regular_expressions와 같은 기본 자습서를 확인하십시오. html – DaOgre

1

사용 PHP의 기능을 폭발 :

$urlArray = explode("\r", $POST["URlsInputName"]) 

이 캐리지 리턴으로 구분 된 URL을 포함하여 입력 상자의 값을 포함하는 URL의 가정 $ POST [ "URlsInputName"]의 배열을 반환합니다.

+1

구분 기호는 "\ n"또는 "\ r \ n"이어야 할 수도 있습니다 ... 그 중 하나를 테스트해야합니다. – KTF

0

기본 블록은 다음과 같습니다이로

 
$text_box_text = <<<TEXT_BOX 
     http://example.com 
     hello.example 
     ftp://ftp.invalid 
     HTTP:/fixslash.invalid 
TEXT_BOX 
; 

function url_map ($likely) 
{ 
    $likely = preg_replace('/^\s+/', '', $likely); #clean up white spaces 
    $likely = preg_replace('/\s+$/', '', $likely); # 
    $likely = preg_match('/^\w+:/', $likely) ? $likely : "http://$likely"; #prepend 
    $likely = preg_replace('|^http:/*|i', 'http://', $likely); #fix /s and case 
    return $likely; 
} 

$likely_urls = preg_split('/[\r\n]+/', $text_box_text); 
$good_urls = preg_grep('/^http:/', array_map("url_map", $likely_urls)); 

는 좀 더 편집증 할 필요가 사용자의 입력이다. 더 많은 오류 검사가 항상 순서대로 수행됩니다.

preg_grep('|^http://[-\w][-.\w]+/|', ...) #assure valid host name

이상.

관련 문제