使用 PHP 将字符串中的 <br> 替换为 space
Replacing <br> with space in string using PHP
我正在尝试用 PHP 中字符串中的 <br>
替换 space,但它似乎不起作用。我将如何纠正我所做的以使这项工作有效?
我试过的代码行如下:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
在代码中 returned 的字符串如下所示:
Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik
return 到 PHP 页面的字符串如下:
Dörte KreherHumboldt-UniversitätInstitut für Mathematik
应该 return 编辑到 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];
}
尝试使用非中断 space html
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
试试这个,它替换了字符串中的所有 html 代码
$keyword = preg_replace("#<[^>]+>#", ' ', getTextBetweenTags($html, "h4", "ctlAuthor"));
你为什么不用strip_tags?即:
$keyword = strip_tags(getTextBetweenTags($html, "h4", "ctlAuthor"));
strip_tags
Strip HTML and PHP tags from a string
string strip_tags ( string $str [, string $allowable_tags ] )
This function tries to return a string with all NULL bytes, HTML and
PHP tags stripped from a given str
. It uses the same tag stripping
state machine as the fgetss() function.
根据您的评论更新:
$string = "Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik";
$notags = preg_replace('/<[^>]*>/', ' ', $string );
echo $notags;
输出:
Dörte Kreher Humboldt-Universität Institut für Mathematik
因为字符串来自 DOMDocument 中元素的节点值,所以需要保留 HTML。为了解决这个问题,代码行:
$pcls[] = $prg->NodeValue;
被替换为:
$pcls[] = $prg->ownerDocument->saveHTML($prg);
然后 HTML 标签可以替换为所需的输出,如下所示:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
我正在尝试用 PHP 中字符串中的 <br>
替换 space,但它似乎不起作用。我将如何纠正我所做的以使这项工作有效?
我试过的代码行如下:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
在代码中 returned 的字符串如下所示:
Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik
return 到 PHP 页面的字符串如下:
Dörte KreherHumboldt-UniversitätInstitut für Mathematik
应该 return 编辑到 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];
}
尝试使用非中断 space html
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));
试试这个,它替换了字符串中的所有 html 代码
$keyword = preg_replace("#<[^>]+>#", ' ', getTextBetweenTags($html, "h4", "ctlAuthor"));
你为什么不用strip_tags?即:
$keyword = strip_tags(getTextBetweenTags($html, "h4", "ctlAuthor"));
strip_tags
Strip HTML and PHP tags from a string
string strip_tags ( string $str [, string $allowable_tags ] )
This function tries to return a string with all NULL bytes, HTML and PHP tags stripped from a given
str
. It uses the same tag stripping state machine as the fgetss() function.
根据您的评论更新:
$string = "Dörte Kreher<br>Humboldt-Universität<br>Institut für Mathematik";
$notags = preg_replace('/<[^>]*>/', ' ', $string );
echo $notags;
输出:
Dörte Kreher Humboldt-Universität Institut für Mathematik
因为字符串来自 DOMDocument 中元素的节点值,所以需要保留 HTML。为了解决这个问题,代码行:
$pcls[] = $prg->NodeValue;
被替换为:
$pcls[] = $prg->ownerDocument->saveHTML($prg);
然后 HTML 标签可以替换为所需的输出,如下所示:
$keyword = str_replace("<br>", " ", getTextBetweenTags($html, "h4", "ctlAuthor"));