2017-03-02 1 views
1

나는 예쁜 URL 링크가 있습니다 : www.abcd.com/Topic-V-CNHVNTNCHUUINP-Gangulys-waving-jersey-at-Lords-or-Dhonis-six-to-win-the-world-cup-- - 어떤-했다 - 더 - 가장 큰 경력 순간 -에 - 인도 - 크리켓 - 역사 Sourav-Ganguly-마헨드라 - 싱 - Dhoni는PHP에서 첫 번째 - "& 세 번째"- "사이의 모든 것을 가져 오는 방법은 무엇입니까?

난 단지 "V-CNHVNTNCHUUINP"를 가져 싶다. 내가 쓴 코드가 작동하지 않습니다이 저를 가져 오는 있습니다

$value = "www.abcd.com/Topic-V-CNHVNTNCHUUINP-Gangulys-waving-jersey-at-Lords-or-Dhonis-six-to-win-the-world-cup---Which-was-the-biggest-winning-moment-in-Indian-cricket-history-Sourav-Ganguly-Mahendra-Singh-Dhoni"; 

$newstr = substr($value, 0, strpos($value, '-', strpos($value, '-')+3)); 
$afterunderscore = substr($newstr, strpos($newstr, "-") + 1); 

: V-CNHVNTNCHUUINP을.

그러나 링크를 테스트 할 때 : www.abcd.com/Topic-HN-CNHVNTNCHWTSSW-Sharukh-Khan-or-Salman-Khan---Who-is-the-biggest-superstar-of-bollywood

결과는 다음과 같습니다. HN.

목표 : 링크가 경우HN-CNHVNTNCHWTSSW 가져 오기 www.abcd.com/Topic-HN-CNHVNTNCHWTSSW-Sharukh-Khan-or-Salman-Khan---Who-is-the-biggest- 슈퍼 스타 -의 - 볼리우드

답변

2

이 예상대로 작동합니다

기능 strposX$number 모양이 $needle$haystack에 반환됩니다. 그런 다음 substr을 사용하여 $value 변수에 저장된 문자열의 원하는 부분을 선택하십시오.

function strposX($haystack, $needle, $number) { 
    preg_match_all("/$needle/", utf8_decode($haystack), $matches, PREG_OFFSET_CAPTURE); 
    return $matches[0][$number-1][1]; 
} 

$value = "www.abcd.com/Topic-HN-CNHVNTNCHWTSSW-Sharukh-Khan-or-Salman-Khan---Who-is-the-biggest-superstar-of-bollywood"; 

$start = min(strposX($value, '-', 1), strposX($value, '-', 3)); 
$length = abs(strposX($value, '-', 1) - strposX($value, '-', 3)); 

echo substr($value, $start + 1, $length - 1); 

출력 :

HN-CNHVNTNCHWTSSW 
2
당신은 경기를 얻기 위해 정규 표현식을 사용할 수

:

$value = "www.abcd.com/Topic-HN-CNHVNTNCHWTSSW-Sharukh-Khan-or-Salman-Khan---Who-is-the-biggest-superstar-of-bollywood"; 

// will account for "V-CNHVNTNCHUUINP" and "HN-CNHVNTNCHWTSSW" 
$pattern = "/Topic-([A-Z]+-[A-Z]+)-/"; 
$matches = []; 

preg_match($pattern, $value, $matches); 

if (isset($matches[1])) { 
    // we got a match 
    echo $matches[1]; // prints "HN-CNHVNTNCHWTSSW" 
} 
관련 문제