Pamiętam, że robiłem to wcześniej, ale nie mogę znaleźć kodu. Używam str_replace, aby zastąpić jeden znak w ten sposób: str_replace(':', ' ', $string);ale chcę zamienić wszystkie następujące znaki \/:*?"<>|, bez robienia str_replace dla każdego.
Pamiętam, że robiłem to wcześniej, ale nie mogę znaleźć kodu. Używam str_replace, aby zastąpić jeden znak w ten sposób: str_replace(':', ' ', $string);ale chcę zamienić wszystkie następujące znaki \/:*?"<>|, bez robienia str_replace dla każdego.
Odpowiedzi:
str_replace() może wziąć tablicę, więc możesz zrobić:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
Alternatywnie możesz użyć preg_replace():
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
str_replace()nad preg_replace()(lub odwrotnie) w przypadku PO?
'~[\\+><-]~'(zwróć uwagę, gdzie -jest). Myślnik ( -) jest metaznakiem wyrażenia regularnego, więc musi uciekać lub strategicznie umieścić go w klasie postaci (wszystko w środku []). Zobacz tę odpowiedź: stackoverflow.com/a/7604888/396458
Jeśli zastępujesz tylko pojedyncze znaki, powinieneś użyć strtr()
Możesz użyć preg_replace () . Poniższy przykład można uruchomić za pomocą php wiersza poleceń:
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
Wynik:
$ s2: "ciąg znaków"
Miałem sytuację, w której musiałem zamienić tagi HTML na dwa różne wyniki zamiany.
$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;
wynik
„Instalator instalacji tryskaczowych i przeciwpożarowych”, „Instalator parowy”, „Układarka do lastryko, płytek i marmuru”,
Chyba się tym opiekujesz:
// 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);
}
W moim przypadku sparametryzowałem niektóre pola w dokumencie HTML, a po załadowaniu tych pól dopasowuję je i zastępuję za pomocą metody str_replace.
<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>