我有一个奇怪的场景,任何帮助都会非常感激,我试图在标题上放置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)
任何人都可以解释一下吗?为什么*字符以这种方式处理?我可以解决这个问题,以便我可以使用它们吗?
由于
答案 0 :(得分:2)
您的**
永远不会匹配,因为单*
符合每次出现。更改顺序,以便先替换双击。
<?php
$phrase = "*title** Some text goes here.";
$target = ['**', '*'];
$replace = ["</h1>", "<h1>"];
$newPhrase = str_replace($target, $replace, $phrase);
echo $newPhrase;
如果您使用1
和11
,则会看到相同的行为。您发布的HTML也不是PHP生成的,我认为您的浏览器会自动更正。