2011-01-31 8 views
2

나는 문자열이이에서PHP 스트립

...<a href="http://mple.com/nCCK8.png">... 

나는 SUBSTR을 시도

"nCCK8.png" part 

을 제거하려고를,하지만이 번호가 필요하며 작동하지 않았다 문자열의 다른 위치에있을 수 있기 때문입니다. 문자열에서 한 번만 발생합니다. .?

기본 문자열은 항상> "를 nCCK8.png 부분 전에 mple.com/, 항상 한 후

이 작업을 수행하는 가장 쉬운 방법은 무엇입니까

+1

'preg_match()'가 필요합니다. –

+0

폭발 기능에 대해 들어 보셨습니까? $ var1 = 폭발 ('/', $ var); 그런 다음 echo $ var1 [0] $ var1 [1] $ var1 [2] $ var1 [3]; 내용을 표시하려면 – B4NZ41

답변

4
[^\/]+?\.png 

$_ = null; 
if (preg_match('/([^\/]+?\.png)/i',$data,$_)){ 
    echo $_[1]; 
} 

작업 데모 : http://www.ideone.com/3IkhB

+0

'$ _'입니까?) – ThiefMaster

+0

@ThiefMaster : 필자는 코드를 삽입하는 범위 내에서 다른 사용자의 변수 이름과 거의 충돌하지 않기 때문에'$ _ '를 사용하는 경향이 있습니다. ;-) 그러나, 결코 모를 ...; p –

+0

사실, 나는 그것이 나쁘다고 말하지 않았다. btw를 초기화 할 필요가 없습니다. 정의되지 않은 변수를 byref 전달하면 통지가 트리거되지 않습니다. – ThiefMaster

0

다음 실제 파일을 얻을 수 parse-url를 사용하는 예를 들어 simplexml 또는 DOM (this answer 참조)를 통해 HREF 요소를 가져 와서 마침내 basename :

<?php 

$href = 'http://mple.com/nCCK8.png'; 
$url_parts = parse_url($href); 
echo basename($url_parts['path']); 

?> 
2

와우,이 모든 다른 대답은 너무 복잡합니다. 문자열이 당신이 게시보다 긴 및 기타 슬래시를 포함하지 않는

$tmp = explode('/', $string); 
//if you actually WANT the "nCCK8.png" part 
return substr($tmp[count($tmp) - 1], 0, -2); 

//if you actually want the rest of it 
$tmp = $array_pop($tmp); 
return substr(implode('/', $tmp), 0, -2); 

이 작동합니다.

+0

! 하지만 멋진 답변! – David19801

+0

브래드의 대답은 분명히 갈 길입니다. – rockerest

+0

개인적으로 나는 문제를 해결하는 데 사용 된 폭발, 카운트 및 스트럿을 보는 것을 선호합니다. 상당히 사소하고 이해하기 쉽습니다. 정규식을 사용해야하는 경우 반드시 문서를 작성해야합니다. –