2015-08-30 4 views
-1

У меня есть строка, которая состоит из тегов <p> </p>, и я хочу их заменить <br />, но всякий раз, когда я пытаюсь использовать str_replace(), это не так.Заменить строки в php

Есть ли решение для этого? Любой другой возможный способ сделать это?

$string="<p> This is one para </p> <p> This is second </p>"; 

Использование:

str_replace("</p> <p>","<br />",$string> nothing gets replaced. 
+2

Вы действительно должны смотреть на [это] (http://stackoverflow.com/help/asking). Что вы пробовали? Во всяком случае, в чем проблема - я не понимаю, о чем вы спрашиваете. – bcsb1001

+2

Покажите свой код и объясните, что * не делает. * Означает, вы получаете: «Предупреждение PHP: код не делает это в строке xx»? – Rizier123

+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 />" 
2

str_replace ищет точное совпадение, и заменяет его. В вашей строке нет "<p> </p>", и поэтому он никогда не будет соответствовать. Поведение, кажется, вы ожидать это:

Если строка содержит эти подстроки, замените их это. Даже если 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, были бы лучшим подходом.

Смежные вопросы