[php] 여러 항목에 대한 Str_replace

이전에이 작업을 기억하지만 코드를 찾을 수 없습니다. 나는 str_replace를 사용 str_replace(':', ' ', $string);하여 다음과 같은 하나의 문자를 대체합니다. 그러나 \/:*?"<>|각각에 대해 str_replace를 수행하지 않고 다음 문자를 모두 대체하고 싶습니다 .



답변

str_replace() 배열을 취할 수 있으므로 다음을 수행 할 수 있습니다.

$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);

또는 다음을 사용할 수 있습니다 preg_replace().

$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);


답변

이렇게 :

str_replace(array(':', '\\', '/', '*'), ' ', $string);

또는 최신 PHP (5.4 이상)에서는 약간 덜 장황한 것입니다.

str_replace([':', '\\', '/', '*'], ' ', $string);


답변

예를 들어 search1을 replace1로 바꾸고 search2를 replace2로 바꾸려면 다음 코드가 작동합니다.

print str_replace(
    array("search1","search2"),
    array("replace1", "replace2"),
    "search1 search2"
);

// 출력 : replace1 replace2


답변

str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);


답변

단일 문자 만 바꾸려면 다음을 사용해야합니다. strtr()


답변

preg_replace () 사용할 수 있습니다 . 다음 예제는 명령 줄 php를 사용하여 실행할 수 있습니다.

<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>

산출:

$ s2 : “문자열”


답변

HTML 태그를 두 개의 다른 대체 결과로 바꿔야하는 상황이있었습니다.

$trades = "<li>Sprinkler and Fire      Protection Installer</li>
<li>Steamfitter </li>
<li>Terrazzo, Tile and Marble      Setter</li>";

$s1 =  str_replace('<li>', '"', $trades);

$s2 = str_replace('</li>', '",', $s1);

echo $s2;

결과

“스프링클러 및 화재 방지 설치”, “Steamfitter”, “Terrazzo, 타일 및 대리석 세터”,