Php 拆分html文本,但不中断“;开放式;标签

Php 拆分html文本,但不中断“;开放式;标签,php,text,split,Php,Text,Split,我正在使用一个PHP函数将文本拆分为最大N个字符的块。 一旦以某种方式“处理”了每个块,它就会再次连接回来。 问题是文本可以是HTML。。。如果在打开的html标记之间发生拆分,“处理”会被破坏。 有人能给出一个关于只在关闭的标记之间断开文本的提示吗 要求: 最大块长度:N 没有标记 没有标记 没有标记 添加示例:(最大块长度=173) Lorem ipsum dolor sit amet,是一位杰出的献身者。整型矢状大鼠。 猫科动物舌苔(Nulla ligula felis)是一种野生动

我正在使用一个PHP函数将文本拆分为最大N个字符的块。 一旦以某种方式“处理”了每个块,它就会再次连接回来。 问题是文本可以是HTML。。。如果在打开的html标记之间发生拆分,“处理”会被破坏。 有人能给出一个关于只在关闭的标记之间断开文本的提示吗

要求:

  • 最大块长度:N
  • 没有
    标记
  • 没有
    标记
  • 没有
    标记
添加示例:(最大块长度=173)


Lorem ipsum dolor sit amet,是一位杰出的献身者。整型矢状大鼠。
猫科动物舌苔(Nulla ligula felis)是一种野生动物,其种类繁多,种类繁多。如图所示,前庭和前庭位于空侧的中间位置,两侧的舌苔是相同的

在上面的文本中,给定173个字符作为限制,文本将中断@“adipising”,但这将中断
。在这种情况下,拆分应在第一次关闭时发生,尽管比最大限制要短。

正确的方法是解析HTML并在其文本节点上执行缩短操作。在PHP5中,您可以使用,尤其是。

正确的方法是解析HTML并在其文本节点上执行缩短操作。在PHP5中,您可以使用,特别是。

Hmmm我使用了一个代码,我必须拆分所见即所得输入的副本,并希望从中检索第一段。这有点诡计多端,但却帮了我一把。 如果您想添加show“n”,那么可以使用substr将其添加到“intro”变量中。 希望这能让你开始:-|

function break_html_description_to_chunks($description = null)
{
    $firstParaEnd = strpos($description,"</p>");
    $firstParaEnd += 4;
    $intro = substr($description, 0, $firstParaEnd);

    $body = substr($description, $firstParaEnd, strlen($description));
    $temp = array("intro" => $intro, "body" => $body);
    return $temp;
}
function break\u html\u description\u to\u chunk($description=null)
{
$firstParaEnd=strpos($description,“

”); $firstParaEnd+=4; $intro=substr($description,0,$firstParaEnd); $body=substr($description,$firstParaEnd,strlen($description)); $temp=array(“intro”=>$intro,“body”=>$body); 返回$temp; }
Hmmm我使用了一个代码,我必须拆分所见即所得输入的副本,并希望从中检索第一段。这有点诡计多端,但却帮了我一把。 如果您想添加show“n”,那么可以使用substr将其添加到“intro”变量中。 希望这能让你开始:-|

function break_html_description_to_chunks($description = null)
{
    $firstParaEnd = strpos($description,"</p>");
    $firstParaEnd += 4;
    $intro = substr($description, 0, $firstParaEnd);

    $body = substr($description, $firstParaEnd, strlen($description));
    $temp = array("intro" => $intro, "body" => $body);
    return $temp;
}
function break\u html\u description\u to\u chunk($description=null)
{
$firstParaEnd=strpos($description,“

”); $firstParaEnd+=4; $intro=substr($description,0,$firstParaEnd); $body=substr($description,$firstParaEnd,strlen($description)); $temp=array(“intro”=>$intro,“body”=>$body); 返回$temp; }
给出一个当前输出和所需输出的示例会有帮助给出一个当前输出和所需输出的示例会有帮助您必须确保使用此工具正确编码标签?如果标签被破坏了怎么办?“与加载XML不同,HTML不需要格式良好才能加载。”——结果可能出乎意料,但它至少应该能够解析它。同样在
loadHTML
手册页面:“DOMDocument非常擅长处理不完美的标记,但是当它这样做时,它会到处抛出警告。”@Riccardo-DOM可以加载HTML,即使它是无效的。您将无法使用getElementById,但其他一切都应该可以使用。如果DOM抛出有关标记的警告,则可以启用自定义错误处理并清除错误。请看,您必须确保使用此工具对标签进行了正确编码?如果标签被破坏了怎么办?“与加载XML不同,HTML不需要格式良好才能加载。”——结果可能出乎意料,但它至少应该能够解析它。同样在
loadHTML
手册页面:“DOMDocument非常擅长处理不完美的标记,但是当它这样做时,它会到处抛出警告。”@Riccardo-DOM可以加载HTML,即使它是无效的。您将无法使用getElementById,但其他一切都应该可以使用。如果DOM抛出有关标记的警告,则可以启用自定义错误处理并清除错误。看见