gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:32 24 4
gpt4 key购买 nike

给定字符串:

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

我需要输出一个数组:

$output = array(
array(
'text'=>'Lorem ipsum dolor sit amet, ',
'formats' => array('bold')
),
array(
'text'=>'consectetuer adipiscing',
'formats' => array('bold','italic')
),
array(
'text'=>' elit.',
'formats' => array('bold')
),
array(
'text'=>' Donec odio. Quisque volutpat mattis eros.'
)
);

这可能吗?合理吗?可能吗?

最佳答案

这可以通过使用 2 种方法来实现。

您的第一个选择是正则表达式。您可以使用 preg_match() 解析文本。例如,要提取标签之间的文本,您可以使用如下内容:

preg_match("@<[^>]>([^<]+)</[^>]>@", $yourHtmltext, $m);
// $m[1] will contain the text between tags
echo $m1;

但对于具有嵌套标签和属性的复杂 HTML 文本,使用正则表达式对字符串进行标记是相当乏味的。

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

$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";
}
?>

使用 DOM 解析而不是正则表达式的额外好处是能够解析任意复杂结构的 HTML 文本,并且更容易采用您的脚本来应对 HTML 文本结构或您的需求 future 可能发生的变化。查看有关 DOMDocument 的文档有关图书馆的更多信息。

关于php - 使用 PHP 将 HTML 字符串转换为文本格式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com