有没有办法可以通过PHP函数在PHP中解析带有HTML标签的字符串。
我无法写一个字符串,因为它没有在这里显示标签。
例如,这个HTML字符串: -
<(bold-tag)>The text<(/bold-tag)>
becomes
**The text**
答案 0 :(得分:0)
strip_tags()
可能是您正在寻找的内容:
http://php.net/manual/en/function.strip-tags.php
编辑:我不得不注意上述文件中的巨大警告:
由于strip_tags()实际上并未验证HTML,因此部分或损坏的标记可能会导致删除比预期更多的文本/数据。
这是一个好点......
答案 1 :(得分:0)
你可以使用str_replace()
传递一系列标签及其替代品,如下所示:
$tags = ['<b>','</b>'];
$replace= ['**','**'];
$string = '<b>Text</b>';
$string = str_replace($tags,$replace,$string);
答案 2 :(得分:0)
如果您想要更通用的解决方案,可以将strpos与substr结合使用。 strpos
函数将给出字符串的位置,substr
将允许您在标记之间提取字符串。
因此,对于HTML标记,您可以执行以下操作:
$right = substr($htmlTxt, strpos($htmlTxt, '>') + 1); // After opening tag
$btwn = substr($right, 0, strpos($right, '</') + 1); // Before the closing tag
$output = '**' . $btwn . '**';
如果你担心像破坏的标签之类的故障,那么你可以更明确地使这些职位变得明确,并添加几个这样的if语句:
$endLftTag = '>';
$endLftTagPos = strpos($htmlTxt, strpos($htmlTxt, $endLftTag) + strlen($endLftTag));
if ($endLftTagPos === FALSE) {
// Not Found, probably return $htmlTxt unchanged
...
}
$beginRgtTag = '</';
$beginRgtTagPos = strpos($htmlTxt, strpos($htmlTxt, $beginRgtTag));
if ($endLftTagPos === FALSE) {
// Opening Tag Not Found
if ($beginRgtTagPos === FALSE) {
// No Tag Found, return unchanged
return $htmlTxt;
} else {
// Return the portion before the closing tag
return substr($htmlTxt, 0, $beginRgtTagPos + 1);
}
} else {
// Opening Tag was Found
if ($beginRgtTagPos === FALSE) {
// Closing Tag Not Found, return everything after $endLftTagPos
return substr($htmlTxt, $endLftTagPos);
} else {
// Both were found, return the string between them
$strLen = $beginRgtTagPos - $endLftTagPos;
return substr($htmlTxt, $endLftTagPos, $strLen);
}
}