Что происходит?
Это исключит все от <до> включенного!
Нет, это хуже: оно ничего не очистит.Вы не можете видеть <?php ...?>
, потому что теги PHP недопустимы в файлах HTML, поэтому браузер автоматически преобразует его в комментарии, так как он не знает, что с ним делать, посмотрите на страницу источника:

Вы пробовали то же самое с другими строками, скажем "Oh! This is a <b>sample text </b>"
?Я уверен, что вы увидите это полужирный .
Вот ваш код в оболочке PHP:
$ php -a
Interactive shell
php > $find = array("<", ">", "[", "]", "{", "}");
php > $replace = array("");
php > $temporaryDetails = 'Oh! This is a <?php sample text ?>';
php > $cleanDetails = str_replace($find, $replace, $temporaryDetails);
php > echo $cleanDetails;
Oh! This is a <?php sample text ?>
Почему это происходит?
str_replace
сломан?Нет, он делает именно то, что вы сказали: заменить
с пустой строкой.
Проблема просто в том, что ни одного из них нет в "<?php sample text ?>"
, потому что "<"
это , а не так же, как "<"
.Первая - это строка из четырех символов, вторая - из одного символа.
Посмотрите на это:
php > $temporaryDetails = 'Oh! This is a <?php sample text ?>';
php > $cleanDetails = str_replace($find, $replace, $temporaryDetails);
php > echo $cleanDetails;
Oh! This is a ?php sample text ?
Рабочее решение
ЧтоВы хотите, вероятно:
$find = array("<", ">", "[", "]", "{", "}");
$replace = "";