> 백엔드 개발 > PHP 튜토리얼 > php_php 팁에서 한 번 또는 N 번만 교체하는 방법

php_php 팁에서 한 번 또는 N 번만 교체하는 방법

WBOY
풀어 주다: 2016-05-16 20:05:44
원래의
1291명이 탐색했습니다.

우리 모두는 PHP에서 Strtr 및 strreplace와 같은 함수를 교체에 사용할 수 있다는 것을 알고 있지만 매번 모두 교체됩니다. 예:
"abcabbc", 위의 함수를 사용하여 이 문자열의 b를 바꾸면 모두 바뀌지만, 한두 개만 바꾸려면 어떻게 해야 할까요?
꽤 흥미로운 질문이네요. 예전에 비슷한 처리를 했던 적이 있었는데, 그 때 preg_replace를 직접 사용해 구현했습니다.

mixed preg_replace(혼합 패턴, 혼합 대체, 혼합 주제 [, int 제한] )
패턴과 일치하는 주제를 검색하여 대체 항목으로 바꿉니다. 한계가 지정되면 한계 일치만 대체됩니다. 한계가 생략되거나 값이 -1인 경우 모든 일치가 대체됩니다.
preg_replace의 네 번째 매개변수는 교체 횟수를 제한할 수 있으므로 이 문제를 이런 방식으로 처리하는 것이 매우 편리합니다. 하지만 php.net에서 str_replace에 대한 함수 설명을 살펴보면 실제로 몇 가지 대표적인 함수를 골라낼 수 있습니다.

방법 1: str_replace_once
아이디어먼저 교체할 키워드의 위치를 ​​찾은 후 substr_replace 함수를 사용하여 직접 교체합니다.

<&#63;php
function str_replace_once($needle, $replace, $haystack) {
// Looks for the first occurence of $needle in $haystack
// and replaces it with $replace.
$pos = strpos($haystack, $needle);
if ($pos === false) {
// Nothing found
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}
&#63;>
로그인 후 복사

방법 2, str_replace_limit
아이디어여전히 preg_replace를 사용하지만 해당 매개변수는 preg_replace에 더 가깝고 일부 특수 문자가 이스케이프되어 더욱 다양해졌습니다.

<&#63;
function str_replace_limit($search, $replace, $subject, $limit=-1) {
// constructing mask(s)...
if (is_array($search)) {
foreach ($search as $k=>$v) {
$search[$k] = '`' . preg_quote($search[$k],'`') . '`';
}
}
else {
$search = '`' . preg_quote($search,'`') . '`';
}
// replacement
return preg_replace($search, $replace, $subject, $limit);
}
&#63;>
로그인 후 복사

편집자가 정리한 기사 "한 번만 교체되는 PHP 키워드 구현 기능"과 결합하여 함께 공부하면 예상치 못한 이득을 얻을 것이라고 믿습니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿