我有一个由标记<p> </p>
组成的字符串,我想用<br />
替换它们,但每当我尝试使用str_replace()
时,它都不会这样做。
有什么解决方案吗?还有其他任何可能的方法吗?
$string="<p> This is one para </p> <p> This is second </p>";
使用:
str_replace("</p> <p>","<br />",$string> nothing gets replaced.
答案 0 :(得分:3)
<?php
$string = "<p> This is one para </p> <p> This is second </p>";
$searchArray = array(
'<p>'
, '</p>'
);
$replaceArray = array(
''
, '<br />'
);
var_dump( str_replace($searchArray, $replaceArray, $string) );
?>
输出
string(47) " This is one para <br /> This is second <br />"
答案 1 :(得分:2)
str_replace
查找完全匹配,并替换它。您的字符串中没有"<p> </p>"
,因此它永远不会匹配。你似乎期待的行为是:
如果字符串包含这些子字符串,请将其替换为 this 。即使str_replace
的行为方式如此,它如何知道放置替代品的位置?
我相信这是你的意图;
$needles = array("<p>" => "",
"</p>" => "</br>");
$string = "<p> This is one para </p> <p> This is second </p>";
$match = true;
foreach($needles as $find => $replace)
{
if(strpos($string, $find) === false)
{
$match = false;
}
}
if($match)
{
foreach($needles as $find => $replace)
{
$string = str_replace($find, $replace, $string);
}
}
echo $string;
如果字符串与$needles
中的所有键匹配,则会将其替换为$needles
中的相应值。但是,如果你要进行更多的HTML操作,那么使用preg_replace
的正则表达式将是一种更好的方法。