복붙노트

내 문자열의 특정 부분을 대체하는 방법?

PHP

내 문자열의 특정 부분을 대체하는 방법?

내 문자열의 특정 부분을 다른 문자열로 대체하려면 어떻게합니까?

입력 문자열 :

"Hello my name is Santa"

문자열에있는 모든 것을 다른 것으로 바꾸려면 어떻게해야합니까?

foreach 루프가 필요하다고 생각하지만 사용 방법을 잘 모르겠습니다.

해결법

  1. ==============================

    1.

    strtr ($str, array ('a' => '<replacement>'));
    

    최신 정보:

    strtr ("hello my name is santa", array ('a' => '<replacement>'));
    

    귀하의 질문에 더 정확하게 대답하십시오.

  2. ==============================

    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
    

    노트

    모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :

    인수

    이 함수는 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
    

    노트

    모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :

    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
    

    노트

    모든 것을 조합하고 다차원 배열에서도 대소 문자를 구별하는 함수를 만들려면 다음과 같이하면됩니다 :

    이제 모든 함수 외에도 간단한 루프를 사용하여 문자열을 반복하고 각 search => 바꾸기를 할 수 있습니다.

    그러나 이것은 위의 함수를 사용하는 것보다 이진 안전성, 대소 문자를 구별하지 않는 경우 및 다차원 배열의 경우 더욱 복잡해집니다. 그래서 저는 여기에 어떤 예도 포함시키지 않을 것입니다.

    현재 위의 모든 메서드는 문자열 전체를 대체합니다. 그러나 때로는 문자열의 특정 부분에 대해서만 바꿀 수 있습니다.

    이를 위해 substr_replace ()를 사용하고 싶거나 사용할 수 있습니다. 또는 다른 일반적인 방법은 substr ()을 사용하여 특정 하위 문자열에만 대체 문자열을 적용하고 그 문자열을 나중에 함께 묶는 것입니다. 물론 정규 표현식을 수정하거나 전체 문자열에 대체를 적용하지 않을 수있는 다른 작업을 수행 할 수도 있습니다.

  3. ==============================

    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. ==============================

    4.이것은 PHP str 함수를 사용하지 않고도 'a'를 '&'앰퍼샌드 문자로 변경하지 않고도 작동 할 수 있습니다.

    이것은 PHP str 함수를 사용하지 않고도 'a'를 '&'앰퍼샌드 문자로 변경하지 않고도 작동 할 수 있습니다.

    for ($i=0; $i<strlen($str); $i++){
       if ($str[$i]=='a'){
           $str[$i]='&amp;';
       }
    }
    echo $str;
    
  5. ==============================

    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;
    
  6. from https://stackoverflow.com/questions/8163746/how-to-replace-certain-parts-of-my-string by cc-by-sa and MIT license