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
, были бы лучшим подходом.
Вы действительно должны смотреть на [это] (http://stackoverflow.com/help/asking). Что вы пробовали? Во всяком случае, в чем проблема - я не понимаю, о чем вы спрашиваете. – bcsb1001
Покажите свой код и объясните, что * не делает. * Означает, вы получаете: «Предупреждение PHP: код не делает это в строке xx»? – Rizier123
Редактировали соответственно –