Hướng dẫn php str_replace multiple

I remember doing this before, but can't find the code. I use str_replace to replace one character like this: str_replace[':', ' ', $string]; but I want to replace all the following characters \/:*?"|, without doing a str_replace for each.

asked Sep 30, 2011 at 2:51

2

Like this:

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

Or, in modern PHP [anything from 5.4 onwards], the slighty less wordy:

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

Codemonkey

4,2124 gold badges38 silver badges72 bronze badges

answered Sep 30, 2011 at 2:53

DogbertDogbert

205k40 gold badges384 silver badges392 bronze badges

0

str_replace[] can take an array, so you could do:

$new_str = str_replace[str_split['\\/:*?"|'], ' ', $string];

Alternatively you could use preg_replace[]:

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

answered Sep 30, 2011 at 2:54

NullUserExceptionNullUserException

82.1k27 gold badges205 silver badges230 bronze badges

6

For example, if you want to replace search2 with replace1 and search2 with replace2 then following code will work:

print str_replace[
    array["search2","search2"],
    array["replace1", "replace2"],
    "search2 search2"
];

// Output: replace1 replace2

answered Feb 10, 2015 at 20:36

SumoanandSumoanand

8,6651 gold badge47 silver badges46 bronze badges

0

str_replace[
    array["search","items"],
    array["replace", "items"],
    $string
];

answered Sep 30, 2011 at 2:54

MartyMarty

38.6k19 gold badges91 silver badges162 bronze badges

If you're only replacing single characters, you should use strtr[]

answered Sep 30, 2011 at 3:05

Explosion PillsExplosion Pills

185k49 gold badges318 silver badges394 bronze badges

1

You could use preg_replace[]. The following example can be run using command line php:


Output:

$s2: "the string          "

answered Sep 30, 2011 at 2:54

GreenMattGreenMatt

17.8k7 gold badges50 silver badges76 bronze badges

1

I had a situation whereby I had to replace the HTML tags with two different replacement results.

$trades = "
  • Sprinkler and Fire Protection Installer
  • Steamfitter
  • Terrazzo, Tile and Marble Setter
  • "; $s1 = str_replace['
  • ', '"', $trades]; $s2 = str_replace['
  • ', '",', $s1]; echo $s2;

    result

    "Sprinkler and Fire Protection Installer", "Steamfitter ", "Terrazzo, Tile and Marble Setter",

    answered Feb 15, 2017 at 18:19

    I guess you are looking after this:

    // example
    private const TEMPLATE = __DIR__.'/Resources/{type}_{language}.json';
    
    ...
    
    public function templateFor[string $type, string $language]: string
    {
       return \str_replace[['{type}', '{language}'], [$type, $language], self::TEMPLATE];
    }
    

    answered Oct 2, 2018 at 11:20

    In my use case, I parameterized some fields in an HTML document, and once I load these fields I match and replace them using the str_replace method.

    
    

    answered Apr 5, 2020 at 19:55

    dataviewsdataviews

    1,8804 gold badges17 silver badges54 bronze badges

    Chủ Đề