Str_replace со сценарием специального символа

У меня странный сценарий, любая помощь будет очень признательна, я пытаюсь поместить теги h1 в заголовок, если я использую следующий код

$phrase  = "*title** Some text goes here.";
$target = ['*', '**'];
$replace   = ["<h1>", "</h1>"];

$newPhrase = str_replace($target, $replace, $phrase);

echo $newPhrase;

Полученный HTML-код выглядит следующим образом:

<h1>title</h1>
<h1></h1>
<h1> Some text goes here.</h1>

Но если я использую следующее (то же, что и раньше, но * заменяется на 1, а ** заменяется на 2):

$phrase  = "1title2 Some text goes here.";
$target = ['1', '2'];
$replace   = ["<h1>", "</h1>"];

$newPhrase = str_replace($target, $replace, $phrase);

echo $newPhrase;

Это работает, и я получаю результат:

 <h1>title</h1>
 Some text goes here. (not as a H1 element)

Кто-нибудь может объяснить это, пожалуйста? Почему символы * обрабатываются таким образом? И могу ли я обойти это, чтобы использовать их?

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш ** никогда не совпадает, потому что один * соответствует каждому случаю. Измените порядок, чтобы сначала заменить двойной.

<?php
$phrase  = "*title** Some text goes here.";
$target = ['**', '*'];
$replace   = ["</h1>", "<h1>"];

$newPhrase = str_replace($target, $replace, $phrase);

echo $newPhrase;

https://3v4l.org/21HZv

Вы бы увидели такое же поведение, если бы использовали 1 и 11. Кроме того, опубликованный вами HTML - это не то, что генерирует PHP, я думаю, ваш браузер автоматически исправляет это.

Блестящее спасибо, это именно та проблема, у меня было ощущение, что браузер исправляет HTML. Еще раз спасибо

JBstar 18.05.2018 14:48

Другие вопросы по теме