Я пам’ятаю, що робив це раніше, але не можу знайти код. Я використовую str_replace для заміни одного символу, як це: str_replace(':', ' ', $string);
але я хочу замінити всі наступні символи \/:*?"<>|
, не роблячи 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()
над preg_replace()
(або навпаки) у випадку ОП?
'~[\\+><-]~'
(зверніть увагу, де -
це). Dash ( -
) - це метахарактер регулярних виразів, тому його потрібно уникати або стратегічно розміщувати в класі символів (усе всередині []
). Дивіться цей відповідь: stackoverflow.com/a/7604888/396458
Якщо ви замінюєте лише окремі символи, вам слід скористатися 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", "Терраццо, установник плитки та мармуру",
Я думаю, ви доглядаєте за цим:
// 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);
}
У моєму випадку використання я параметризував деякі поля в HTML-документі, і як тільки я завантажую ці поля, я співпадаю та замінюю їх методом str_replace.
<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>