Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将文本一分为二,但保持HTML层次结构不变?_Php_Html_Regex - Fatal编程技术网

Php 如何将文本一分为二,但保持HTML层次结构不变?

Php 如何将文本一分为二,但保持HTML层次结构不变?,php,html,regex,Php,Html,Regex,我需要实现一个RSS提要,其中只显示文章文本的一半(或最多n个字符),但所有HTML标记都保持不变(如图像或youtube视频) 例如,如果我在YouTube视频的代码中间(即,在所有的表中)将文本切割的字符数限制在哪里,我将如何将代码写入到 a) 允许额外字符最多出现在youtube代码和表的结束标记处,或 b) 在表格打开之前剪切文本 这两种解决方案都是可以接受的 例如,如果我的文章中有这样的文字: <p>Lorem ipsum dolor sit amet, consectet

我需要实现一个RSS提要,其中只显示文章文本的一半(或最多n个字符),但所有HTML标记都保持不变(如图像或youtube视频)

例如,如果我在YouTube视频的代码中间(即,在所有的表中)将文本切割的字符数限制在哪里,我将如何将代码写入到

a) 允许额外字符最多出现在youtube代码和表的结束标记处,或

b) 在表格打开之前剪切文本

这两种解决方案都是可以接受的

例如,如果我的文章中有这样的文字:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vel eros eu mi estibulum blandit 
<table>
   <tr>
      <td>
         <iframe src="http://video.example.com"></iframe>
      </td>
   </tr>
</table>
Phasellus sollicitudin nulla imperdiet metus ullamcorper eget ornare dui rutrum. </p>
Lorem ipsum Door sit amet,是一位杰出的领导者。我爱你,我爱你
芦苇对芦苇的危害

并且让我们说,我必须剪切的字符数适合在“中间”的某个地方。显然,只发送iframe标记的这一半(和表的一半)是不好的

所以,我想说的是

(a)

Lorem ipsum Door sit amet,是一位杰出的领导者。我爱你,我爱你

或b)

Lorem ipsum Door sit amet,是一位杰出的领导者。我爱你,我爱你

同样,在UL列表、div或任何其他可能在其中的中间进行切割。唯一可以删去的是段落,因为无论如何都是段落。


我希望你知道我的意思,我不知道我是否解释得很好。

你可以得到元素的
innerHTML()
,创建一个子字符串直到文本的一半,然后使用
innerHTML()
再次更改它,遍历所有元素。

那么,到目前为止你的代码是什么?您被困在哪里了?如何构建输出xml?为什么不干脆修剪这些值,而不是直接将一块html放到xml@kaᵠ 到目前为止我还没有任何代码,我只是不知道怎么做。。。我想我应该设法把文本串成子串,然后计算打开的标签和关闭的标签的数量,以找出应该剪切的位置,避免打开所有没有关闭的标签。但我知道,这种过于复杂的解决方案会太耗费资源,而且速度太慢。@l̕aͨEͩEͩ844; 861;ͯͯCͩ519; CDATAƐ531; 0ne将html转换为xml是客户的要求,既然标签允许,这应该不会是问题。但是我真的不明白你所说的“只是”修剪值是什么意思?如果你想要的话,你也只能从中得到文本。看答案。这个问题主要是带标签的,你的答案看起来像JS,而且主要是一个idea@btevfik他说的↑. 我必须创建一个RSS源,但我不能用Javascript来创建它。@3Nex phpQuery怎么样?@btevfik Nice,从没听说过。我会试一试的。
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vel eros eu mi estibulum blandit </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vel eros eu mi estibulum blandit 
<table>
   <tr>
      <td>
         <iframe src="http://video.example.com"></iframe>
      </td>
   </tr>
</table>
</p>