字符串
"<p>This is </p><p>Stackoverflow</p><p>site for programmers</p>"
必需的输出
"This is <p>Stackoverflow</p><p>site for programmers</p>"
小功能
function remove_p($string)
{
$first_p=substr($string,0,3);
$p="<p>";
if($first_p==$p)
{
$string=str_replace('<p>','',$string,$temp=1);
$string=str_replace('</p>','',$string,$temp=1);
}
return $string;
}
但它删除了所有<p> </p>
标签。为什么?
我基本上写这个是为了删除ckeditor创建的第一个段落标记。
答案 0 :(得分:3)
str_replace
对所有出现的子字符串起作用,而不仅仅是第一个。您将需要使用其他功能。
$string = preg_replace('~<p>(.*?)</p>~is', '$1', $string, /* limit */ 1);
要仅删除字符串开头的第一个<p>
和</p>
,请在第一个^
之后添加/
。
另请参阅:Using str_replace so that it only acts on the first match?
答案 1 :(得分:1)
function replaceFirst($input, $search, $replacement){
$pos = stripos($input, $search);
if($pos === false){
return $input;
}
else{
$result = substr_replace($input, $replacement, $pos, strlen($search));
return $result;
}
}
$string = "This is <p>Stackoverflow</p><p>site for programmers</p>";
echo $string;
echo replaceFirst($string, '<p>', '');
输出:
This is <p>Stackoverflow</p><p>site for programmers</p>
This is Stackoverflow</p><p>site for programmers</p>
来源:#2031045
希望这有帮助!
答案 2 :(得分:1)
$str = "This is <p>Stackoverflow</p><p>site for programmers</p>";
function remove_p($string)
{
$string=str_replace('<p>','',$string,$temp=1);
$string=str_replace('<\p>','',$string,$temp=1);
return $string;
}
echo(remove_p($str));
结果是:
这是Stackoverflow
程序员网站
答案 3 :(得分:0)
尝试使用this answer的方法。
function remove_p($string)
{
return replaceFirst(replaceFirst($string, '<p>', ''), '</p>', '');
}