我正在尝试用PHP中的字符串中的空格替换<br>
,但它似乎不起作用。我将如何纠正我为完成这项工作所做的工作?
我尝试过的代码行如下:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
代码中返回的字符串如下所示:
Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik
返回PHP页面的字符串如下:
Dörte KreherHumboldt-UniversitätInstitut für Mathematik
应该返回到PHP页面的所需字符串:
Dörte Kreher Humboldt-Universität Institut für Mathematik
这是getTextBetweenTags()函数:
function getTextBetweenTags($string, $tagname, $tagid)
{
$dochtml = new DOMDocument();
$dochtml->loadHTML($string);
$prgs = $dochtml->getElementsByTagName($tagname);
$pcls = array();
foreach($prgs as $prg)
{
if ($prg->getAttribute('id') == $tagid){
$pcls[] = $prg->nodeValue;
}
}
return $pcls[0];
}
答案 0 :(得分:3)
尝试使用非破坏空格html
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
答案 1 :(得分:0)
试试这个,它取代了字符串
中的所有html代码 $keyword = preg_replace("#<[^>]+>#", ' ', getTextBetweenTags($html, "h4", "ctlAuthor"));
答案 2 :(得分:0)
为什么不使用strip_tags?即:
$keyword = strip_tags(getTextBetweenTags($html, "h4", "ctlAuthor"));
strip_tags
从字符串中删除HTML和PHP标记
string strip_tags ( string $str [, string $allowable_tags ] )
此函数尝试返回包含所有NULL字节,HTML和的字符串 PHP标记从给定的
str
中剥离。它使用相同的标签剥离 状态机作为fgetss()函数。
根据您的评论进行更新:
$string = "Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik";
$notags = preg_replace('/<[^>]*>/', ' ', $string );
echo $notags;
输出:
DörteKreherHumboldt-UniversitätInstitutfürMathematik
答案 3 :(得分:0)
因为字符串来自DOMDocument中元素的NodeValues,所以需要保留HTML。为了解决这个问题,代码行:
$pcls[] = $prg->NodeValue;
替换为:
$pcls[] = $prg->ownerDocument->saveHTML($prg);
然后HTML标签可以用所需的输出替换,如下所示:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));