개발 꿀팁/PHP

php str_replace 지정한 횟수 바꾸기

Jammie 2022. 8. 23. 16:47
반응형

php str_replace 메서드, 문자열 바꾸기

형식은 다음과 같습니다

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

search에서 찾은 목표값, 즉 needle입니다.하나의 배열로 복수의 타겟을 지정할 수 있다.
replace search의 치환값.배열은 다중 치환을 지정하는 데 사용될 수 있다.

subject에서 대체 배열이나 문자열을 실행합니다.바로 haystack이다.만약 subject가 배열이라면, subject를 대체하고 값을 되돌려줍니다.배열.

count를 지정하면 그 값은 치환 발생 횟수로 설정됩니다.총 몇 번의 교체가 발생했는지。



설명:

search와 replace가 배열이면 str_replace() subject를 매핑으로 바꿉니다.

replace 값이 search 값보다 작을 경우, 여분의 양은 비어 있습니다문자열로 진행됩니다.

search가 배열이고 replace가 문자열이면 search의 각 요소의 교체는 항상 이 문자열을 사용합니다.

str_replace 치환 방법은 대소문자를 구분한다.



예:

<?php
$str = 'abcdefgh';
echo str_replace('abc', '123', $str); // 123defgh
 
$str = '123456';
$search = array(1, 2, 3, 4, 5, 6);
$replace = array('a', 'b', 'c', 'd', 'f', 'g');
echo str_replace($search, $replace, $str); // abcdefg
 
$arr = array('abc','bac','cba');
$result = str_replace('b', 'B', $arr, $count);
print_r($result); // Array ( [0] => aBc [1] => Bac [2] => cBa )
echo $count;      // 3 총 3번 교체했습니다
?>

str_replace를 사용하면 문자열을 바꾸는 것이 편리하지만, search와 일치하는 모든 값은 replace 값으로 바뀝니다.이 방법은 지정된 횟수만큼 교체하려고 하면 실현될 수 없다.
예: user_order_list를 user/order_list로 대체합니다

<?php
$str = 'user_order_list';
echo str_replace('_', '/', $str); // user/order/list
?>

지정한 횟수만큼 메서드를 바꿉니다. 정규 preg_replace 메서드를 사용할 수 있습니다

<?php
/**
 * 문자열에 대해 지정된 횟수 바꾸기
 * @param  Mixed $search   목표값 찾기
 * @param  Mixed $replace  값 바꾸기
 * @param  Mixed $subject  대체 문자열/ 배열 실행
 * @param  Int   $limit    교체 허용 횟수, 기본값은 -1, 횟수 제한 없음
 * @return Mixed
 */
function str_replace_limit($search, $replace, $subject, $limit=-1){
    if(is_array($search)){
        foreach($search as $k=>$v){
            $search[$k] = '`'. preg_quote($search[$k], '`'). '`';
        }
    }else{
        $search = '`'. preg_quote($search, '`'). '`';
    }
    return preg_replace($search, $replace, $subject, $limit);
}
?>

예:

<?php
$str = 'user_order_list';
echo str_replace_limit('_', '/', $str, 1); // user/order_list
 
$arr = array('abbc','bbac','cbba');
$result = str_replace_limit('b', 'B', $arr, 1);
print_r($result); // Array ( [0] => aBbc [1] => Bbac [2] => cBba )
?>
반응형

'개발 꿀팁 > PHP' 카테고리의 다른 글

php 문법 기술  (0) 2022.08.24
mongodb 위치 찾기  (0) 2022.08.24
php 두 지점 좌표 거리 계산  (0) 2022.08.23
php 자주 사용하는 사용자 정의 방법  (0) 2022.08.23
php 헤더로 사용자 정의 데이터 보내기  (0) 2022.08.23