将长html分割成更小的部分



我需要根据标签和内联样式将长html分成更小的部分。例如给定html

<table>
<tr>
<td style="font-size:12px;">Some long string here</td>
<td style="color: red">Some short string here</td>
<td style="font-weight: bold">Some specific string here</td>
</tr>
</table>

问题的根源:我有一个长html超过50k的字符,我需要通过谷歌翻译api翻译它,每个请求的最大限制为5000个字符。

对于分割它,您可以使用str_split并迭代数组:

$chunks = str_split($html, 5000);
foreach ($chunks as $chunk) {
// $chunk var is up to 5000 chars long
}

但是在此之前,您可能想要考虑不带HTML部分发送它:

$dom = new DOMDocument();
$dom->loadHTML($html);
$text = "";
foreach ($dom->getElementsByTagName('*') as $element) {
$text .= $element->textContent . "n";
}

然后在$text变量上使用拆分操作。

对于这两个组合,假设输入变量是$html:

function htmlToText($html)
{
$text = "";
$dom = new DOMDocument();
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('*') as $element) {
$text .= $element->textContent . "n";
}
return $text;
}
$chunks = str_split(htmlToText($html), 5000);
foreach ($chunks as $chunk) {
// dispatch the API operation over $chunk
}

最新更新