使用PHP将HTML字符串转换为文本格式数组

使用PHP将HTML字符串转换为文本格式数组,php,html,Php,Html,给定字符串: <b>Lorem ipsum dolor sit amet, <i>consectetuer adipiscing</i> elit.</b> Donec odio. Quisque volutpat mattis eros. 这可能吗?看似合理的可能吗?可以使用两种方法 第一个选项是正则表达式。您可以使用preg\u match()解析文本。例如,要在标记之间转换文本,可以使用以下内容: preg_match("@<[^&g

给定字符串:

<b>Lorem ipsum dolor sit amet, <i>consectetuer adipiscing</i> elit.</b> Donec odio. Quisque volutpat mattis eros.

这可能吗?看似合理的可能吗?

可以使用两种方法

第一个选项是正则表达式。您可以使用
preg\u match()
解析文本。例如,要在标记之间转换文本,可以使用以下内容:

preg_match("@<[^>]>([^<]+)</[^>]>@", $yourHtmltext, $m);
// $m[1] will contain the text between tags
echo $m1;
preg_match(“@]”>([^@,$yourHtmltext,$m);
//$m[1]将包含标记之间的文本
echo$m1;
但是,对于带有嵌套标记和属性的复杂HTML文本,使用正则表达式标记字符串是相当繁琐的

在我看来,使用DOM解析解析HTML文本的DOM结构会更好。这种方法将使您能够逐个节点地遍历文本节点,提取您需要的任何内容-标记、标记之间的文本、标记属性等。这是一个使用PHP内置DOMDocument解析HTML文本的简单示例t(取自php.net的示例):

$myhtml=getAttribute('href').|'.$tag->nodeValue.\n”;
}
?>

使用DOM解析而不是正则表达式的额外好处是能够解析任意复杂结构的HTML文本,并且可以更轻松地采用您的脚本以适应HTML文本结构或您的需求的未来可能的更改。有关库的详细信息,请参阅文档。

(如果仅限于此)<代码>和
,这是小菜一碟。你有其他标记或CSS吗?是的,任何事情都有可能。不,完全类似的东西没有内置,你必须自己编码。提示:HTML/XML解析器会有帮助。@Aziz这是一个有限的标记列表:这两个和。
preg_match("@<[^>]>([^<]+)</[^>]>@", $yourHtmltext, $m);
// $m[1] will contain the text between tags
echo $m1;
$myhtml = <<<EOF
<html>
<head>
<title>My Page</title>
</head>
<body>
<p><a href="/mypage1">Hello World!</a></p>
<p><a href="/mypage2">Another Hello World!</a></p>
</body>
</html>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($myhtml);

$tags = $doc->getElementsByTagName('a');

foreach ($tags as $tag) {
       echo $tag->getAttribute('href').' | '.$tag->nodeValue."\n";
}
?>