2015-01-30 3 views
1

str_replace()은 문자열 인스턴스를 제거합니다.문자열 내에서 값의 두 번째 인스턴스를 제거 할 수 없습니다.

하지만 문자열 내에서 하나의 문자열 인스턴스 만 제거하려면 어떻게해야합니까?

아래, 난 단지 exampleDirecotry /`내가 첫 번째 테스트에 필요한

www.example/exampleDirectory/exampleDirectory/index.php 

이 exampleDirectory의 두 가지 예입니다/만약 그렇다면 그 첫 번째 인스턴스를 제거하려면, URL 주소의 예입니다 그 중 하나를 제거하십시오.

$url = www.example/exampleDirectory/exampleDirectory/index.php 

if ($url == ) 
{ 
    $newURL = str_replace($url, "", "exampleDirectory/"); 

} 
+0

당신은 substr_replace'을 살펴해야한다()', 먼저 당신이 대체하고자하는 문자열의 오프셋 및 길이를 찾아야합니다. – Cyclonecode

+0

안녕하세요. 난 단지 exampleDirecotory /의 첫 번째 인스턴스를 제거하고 싶다. –

+1

'$ newURL = str_replace ("e/exampleDirectory /", "e", $ url);'옵션일까요? –

답변

0

당신은 오프셋 및 길이가 첫 번째 문자열의 발견하여이 작업을 수행 할 수 있습니다. 그래서 둘 이상의 인스턴스가 확인하려면 substr_count()을 사용할 수

$search = "exampleDirectory/"; 
// check so the string exists more than once 
if (substr_count($url, $search) > 1) { 
    $length = strlen($search); 
    $offset = strpos($url, $search); 
    // replace the first occurance of the string 
    $newURL = substr_replace($url, "", $offset, $length); 
} 
2

매우 간단한 오류 Paul을 작성했습니다. 나는 때때로 그것을한다. 매개 변수의 올바른 순서는 다음과 같습니다

str_replace($search, $replace, $subject) 

가장 쉬운 방법 :

$newURL = str_replace("/exampleDirectory/exampleDirectory", 
         "/exampleDirectory", $url); 
관련 문제