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'); ?>