내 문자열의 특정 부분을 대체하는 방법?
PHP내 문자열의 특정 부분을 대체하는 방법?
내 문자열의 특정 부분을 다른 문자열로 대체하려면 어떻게합니까?
입력 문자열 :
"Hello my name is Santa"
문자열에있는 모든 것을 다른 것으로 바꾸려면 어떻게해야합니까?
foreach 루프가 필요하다고 생각하지만 사용 방법을 잘 모르겠습니다.
해결법
-
==============================
1.
strtr ($str, array ('a' => '<replacement>'));
최신 정보:
strtr ("hello my name is santa", array ('a' => '<replacement>'));
귀하의 질문에 더 정확하게 대답하십시오.
-
==============================
2.문자열의 특정 부분을 다른 것으로 대체하는 몇 가지 다른 함수 / 메소드가 있으며, 모두 고유 한 장점이 있습니다.
문자열의 특정 부분을 다른 것으로 대체하는 몇 가지 다른 함수 / 메소드가 있으며, 모두 고유 한 장점이 있습니다.
인수
str_replace ()에는 위의 정의에서 올바른 순서로 볼 수있는 3 개의 필수 인수가 있으며, 모두 인수로 배열을 문자열로 취할 수 있습니다!
검색 및 바꾸기
제목
암호
echo str_replace("search", "replace", "text search text"); echo str_replace(["t", "a"], "X", "text search text"); echo str_replace("search", ["replace1", "replace2"], "text search text"); echo str_replace(["a", "c"], ["X", "Y"], "text search text");
산출
text replace text XexX seXrch XexX Notice: Array to string conversion text seXrYh text
노트
모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :
php 함수 str_ireplace_deep ($ search, $ replace, $ subject) { if (is_array ($ subject)) { foreach ($ subject를 & $ oneSubject로) $ oneSubject = str_ireplace_deep ($ search, $ replace, $ oneSubject); unset ($ oneSubject); return $ subject; } else { return str_ireplace ($ search, $ replace, $ subject); } } ?>
인수
이 함수는 from 및 to 문자열을 사용하여 3 개의 인수를 취하거나 위의 예에서 볼 수있는 대체 배열 배열 ( "search"=> "replace"/ *, ... * /)을 사용하여 2 개의 인수를 취합니다. 올바른 순서의 정의.
2 개의 논증
가장 긴 키를 해당 값으로 바꾸기 시작하고 모든 키 => 값 쌍을 바꿀 때까지이 작업을 수행합니다. 이 경우 함수는 전체 키 / 값을 사용하므로 이진 안전입니다.
3 개의 논증
from 인수를 바이트 단위로 to의 인수로 대체합니다. 그래서 이진 안전하지 않습니다!
from 및 to 인수의 길이가 다른 경우에는 더 짧은 문자열의 끝에 도달하면 대체가 중지됩니다.
제목
제목으로 배열을 허용하지 않고 문자열 만 허용합니다.
암호
echo strtr("text search text", "ax", "XY");; echo strtr("text search text", ["search" => "replace"]);
산출
teYt seXrch teYt text replace text
노트
모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :
php if (! function_exists ( "stritr")) { function stritr ($ string, $ one = NULL, $ two = NULL) { / * stritr - 대소 문자를 구별하지 않는 버전의 strtr 저자 : Alexander Peev PHP.NET에서 배치하는 * / if (is_string ($ one)) { $ 2 = strval ($ 2); $ one = substr ($ one, 0, min (strlen ($ one), strlen ($ two))); $ 2 = substr ($ 2, 0, min (strlen ($ one), strlen ($ two))); $ product = strtr ($ string, (strtoupper ($ one) .strtolower ($ one)), ($ two. $ two)); return $ product; } else if (is_array ($ one)) { $ pos1 = 0; $ product = $ string; while (count ($ one)> 0) { $ positions = array (); foreach ($ from => $ to) { if (($ pos2 = stripos ($ product, $ from, $ pos1)) === 거짓) { unset ($ one [$ from]); } 그밖에{ $ positions [$ from] = $ pos2; } } if (count ($ one) <= 0) 중단; $ winner = min ($ positions); $ key = array_search ($ winner, $ positions); $ product = (substr ($ product, 0, $ winner). $ one [$ key]. substr ($ product, ($ winner + strlen ($ key)))); $ pos1 = ($ winner + strlen ($ one [$ key])); } return $ product; } 그밖에{ return $ string; } } / * endfunction stritr * / * } / * endfunction 존재 stritr * / function stritr_deep ($ string, $ one = NULL, $ two = NULL) { if (is_array ($ string)) { foreach ($ string as & $ oneSubject) $ oneSubject = stritr ($ string, $ one, $ two); unset ($ oneSubject); return $ string; } else { return stritr ($ string, $ one, $ two); } } ?>
인수
preg_replace ()에는 위의 순서대로 3 개의 필수 매개 변수가 있습니다. 이제는 모두 3 개가 문자열을 인수로 배열로 사용할 수 있습니다.
검색 및 바꾸기
제목
참고 사항 : 검색은 정규 표현식이어야합니다! 즉, 구분 기호가 필요하고 특수 문자를 이스케이프 처리해야합니다.
암호
echo preg_replace("/search/", "replace", "text search text"); echo preg_replace(["/t/", "/a/"], "X", "text search text"); echo preg_replace("/search/", ["replace1", "replace2"], "text search text"); echo preg_replace(["a", "c"], ["X", "Y"], "text search text");
산출
text replace text XexX seXrch XexX Warning: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array text seXrYh text
노트
모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :
php 함수 preg_replace_deep ($ search, $ replace, $ subject) { if (is_array ($ subject)) { foreach ($ subject를 & $ oneSubject로) $ oneSubject = preg_replace_deep ($ search, $ replace, $ oneSubject); unset ($ oneSubject); return $ subject; } else { return preg_replace ($ search, $ replace, $ subject); } } ?>
이제 모든 함수 외에도 간단한 루프를 사용하여 문자열을 반복하고 각 search => 바꾸기를 할 수 있습니다.
그러나 이것은 위의 함수를 사용하는 것보다 이진 안전성, 대소 문자를 구별하지 않는 경우 및 다차원 배열의 경우 더욱 복잡해집니다. 그래서 저는 여기에 어떤 예도 포함시키지 않을 것입니다.
현재 위의 모든 메서드는 문자열 전체를 대체합니다. 그러나 때로는 문자열의 특정 부분에 대해서만 바꿀 수 있습니다.
이를 위해 substr_replace ()를 사용하고 싶거나 사용할 수 있습니다. 또는 다른 일반적인 방법은 substr ()을 사용하여 특정 하위 문자열에만 대체 문자열을 적용하고 그 문자열을 나중에 함께 묶는 것입니다. 물론 정규 표현식을 수정하거나 전체 문자열에 대체를 적용하지 않을 수있는 다른 작업을 수행 할 수도 있습니다.
-
==============================
3.str_replace는 단순한 대체 작업 (예 : 단일 문자 교체)에 충분하지만 preg_replace의 사용은 일반적으로 융통성 있고 다양하기 때문에 일반적으로 권장됩니다 (더 유연하거나 다용도가 필요한 경우). 그리고 'a'는 단지 예일뿐입니다.
str_replace는 단순한 대체 작업 (예 : 단일 문자 교체)에 충분하지만 preg_replace의 사용은 일반적으로 융통성 있고 다양하기 때문에 일반적으로 권장됩니다 (더 유연하거나 다용도가 필요한 경우). 그리고 'a'는 단지 예일뿐입니다.
$String = preg_replace('/<string>/','<replacement>',$String);
한 번에 여러 개의 대체물을 원할 경우 :
$String = preg_replace(array('/<string 1>/','/<string 2>/'),array('<replacement 1>','<replacement 2>'),$String);
preg_replace는 유감스럽게도 사용하기가 까다 롭습니다. 다음 읽기를 권장합니다. http://php.net/manual/en/function.preg-replace.php http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html
또한 str_replace ()를 사용하기로 결정하고 대 체 문자를 대소 문자로 구분해야 할 경우 str_ireplace ()가 필요합니다.
-
==============================
4.이것은 PHP str 함수를 사용하지 않고도 'a'를 '&'앰퍼샌드 문자로 변경하지 않고도 작동 할 수 있습니다.
이것은 PHP str 함수를 사용하지 않고도 'a'를 '&'앰퍼샌드 문자로 변경하지 않고도 작동 할 수 있습니다.
for ($i=0; $i<strlen($str); $i++){ if ($str[$i]=='a'){ $str[$i]='&'; } } echo $str;
-
==============================
5.함수 preg_replace () 사용
함수 preg_replace () 사용
$text ='this is Old word'; echo $text; echo '<br>'; $text = preg_replace('/\bOld word\b/', 'NEW WORD', $text); echo $text;
from https://stackoverflow.com/questions/8163746/how-to-replace-certain-parts-of-my-string by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
HTTPS 및 SSL3_GET_SERVER_CERTIFICATE : 인증서 확인에 실패했으며 CA는 정상입니다. (0) | 2018.09.08 |
---|---|
$ .load 내부의 양식이 올바르게 게시되지 않습니다. (0) | 2018.09.08 |
치명적 오류 : 비 객체의 fetch_assoc () 멤버 함수 호출 (0) | 2018.09.08 |
PHP associative arrays를 이용한 데카르트 제품 찾기 (0) | 2018.09.08 |
PHP로 날짜별로 파일 정렬 (0) | 2018.09.08 |