在php中替换字符串

时间:2015-08-30 16:54:43

标签: php string

我有一个由标记<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.

2 个答案:

答案 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的正则表达式将是一种更好的方法。