2010-03-16 3 views
1

데이터베이스에 제출되는 항목이 다소 있습니다.링크 문자열 확인

이 항목에 링크가 있는지 확인하려면 어떻게해야합니까? 누군가 나를 시작할 수 있습니까?

꽤 많이, 나는 <a, <a href 또는 문자열 내의 다른 관련 링크 인스턴스를 찾기를 원합니다.

나는 항목을 배열에 던지지 않기를 바란다. 이 작업을 수행하는 다른 방법이 있습니까? 당신은 떨어져 정규식에서 유지하려면

+1

그래서 링크를 사용하면 'a' 엘리먼트를 의미합니까? – Gumbo

+0

예, 맞습니다. – Mike

+0

아, 좋아. 마크 업이 시스템에서 막 먹었습니다. – Gumbo

답변

0

체크 아웃 Regex"<a " 추출물을 찾기 위해 strpos 및 SUBSTR의 못생긴 조합을 사용할 수 있습니다, HTML 태그

+2

수 없습니다! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

+1

Ok, cool. 그것은 재미있는 읽을 거리입니다. 나는 정규 표현식이 모든 경우에 이상적이지는 않을 것이라는 데 동의하지만, 포스터는 " Joel

0

를 찾고자하는 등

뭔가 추한 것을, 이 (이 경우에만 첫 번째 링크를 찾습니다, 그것은 나쁜 코드와 함께 실패하고 '(XHTML은 유효하지 않습니다) 찾을 수 없습니다) ps 이것은 나쁜 생각입니다.

function findLink($string) { 
    $pos = strpos($string, "<a "); 
    if ($pos === false) 
    return false; 

    $string = substr($string, $pos); 
    $pos = strpos($string, "href"); 
    $string = substr($string, $pos); 

    // First quote 
    $pos = strpos($string, '"'); 
    $string = substr($string, $pos + 1); 

    // Last quote 
    $pos = strpos($string, '"'); 
    $string = substr($string, 0, $pos); 

    if (trim($string) != "") 
    return $string; 
    return false; 
} 

문자열을 토큰화할 수도 있습니까?

$token = strtok($string, "\"'"); 
while ($token !== false) { 
    // Look for anything with a link in it 
    str_replace(array("http://", "www", "ftp://"), "", ltrim($string), $count); 
    if ($count > 0) 
    return $string; 
    $token = strtok($string, "\"'"); 
} 
return false; 

참고 : 이러한 작업을 수행하는 것은 바람직하지 않습니다.