2017-01-20 2 views
1

저는 텍스트에서 쉼표가 마지막으로 나타나는 자리를 "and"로 바꾸려고합니다. strrchr()str_replace()을 사용하고 있습니다.php를 사용하여 문자열의 마지막 쉼표를 "and"로 바꾸는 방법?

예 :이 문자열의 마지막 쉼표를 포함

$likes = 'Apple, Samsung, Microsoft'; 
$likes = str_replace(strrchr($likes, ','), ' and ', $likes); 

하지만 (이 경우 마이크로 소프트) 전체 마지막 단어를 대체합니다. 마지막 쉼표를 제거하고이를 "and"로 바꿀 수 있습니까?

이 문제를 해결하려면 strrchr()을 함수로 사용해야합니다. 이것이이 질문이 중복되고 더 구체적이지 않은 이유입니다.

+2

문자열의 문자열의 마지막 위치를 바꿀 수있는 가능한 복제본? (http://stackoverflow.com/a/3835653/5447994) – Thamilan

+0

그 질문을 보았습니다. 이 문제를 해결하려면'strrchr'을 사용해야합니다. – AlexioVay

답변

1

regex를 사용하여 문자열의 마지막 쉼표를 찾을 수 있습니다. PHP preg_replace() 문자열을 regex 패턴으로 다른 문자열로 대체하십시오. demo

1

먼저 요소를 마지막 요소를 제외한 나머지 요소와 마지막 요소를 제외한 배열로 분리해야합니다.

$likes = "A, B, C"; 
$likes_arr = explode(",", $likes); 
$last = array_pop($likes_arr); 
$likes = implode(",", $likes_arr) . " and" . $last; 
echo $likes; //"A, B and C"; 

그러나 실제로 요소가 충분한 지 확인하는 것을 잊지 마십시오. 이것은 쉼표없이 입력에 실패합니다.

+0

경고 : array_pop()는 매개 변수 (1) 배열을 할 것으로 기대 – jitendrapurohit

+1

그래, 이미 오타, 고정 된 덕분에 :) –

+0

우리가 사용할 수있는 (마지막 $) { 는 $는 = 내파 (",", $의 likes_arr)를 좋아하는 경우. "and". $ last; echo $ likes; // "A, B 및 C"; \t } 쉼표없이 입력 실패시 –

3

이 마지막 발생을 교체하려면에

$likes = 'Apple, Samsung, Microsoft'; 
$likes = preg_replace("/,([^,]+)$/", " and $1", $likes) 

확인 결과, 나는 더 좋은 방법이 생각 :

$likes = 'Apple, Samsung, Microsoft'; 
$likes = substr_replace($likes, ' and', strrpos($likes, ','), 1); 

strrpos 마지막 쉼표의 위치를 ​​찾아 내고, substr_replace 원하는 문자열을두고 이 경우에는 '1'문자를 대체합니다.