我正在尝试在字符串内的单词之间添加 HTML 标签(用 html 标签包装单词,即 HTML 注释)。HTML 标记应该写入的位置由偏移数组分隔,例如://array(Start offset, End offset) in characters//Note that annotation starts in the Start offset number and ends before the End offset number$annotationCharactersPositions= array( 0=>array(0,3), 1=>array(2,6), 2=>array(8,10));因此,要使用以下 HTML 标记 ($tag) 注释以下 HTML 文本 ($source)。这是包装由 $annotationPositions 数组分隔的字符(不考虑源的 HTML 标记)。$source="<div>This is</div> only a test for stackoverflow";$tag="<span class='annotation n-$cont'>";结果应如下(https://jsfiddle.net/cotg2pn1/):charPos =--------------------------------- 01---------------------------- 2-------------------------------------------3------------------------------------------45-------67-----------------------------89-------10,11,12,13......$output = "<div><span class='annotation n-1'>Th<span class='annotation n-2'>i</span></span><span class='annotation n-2'>s</span><span class='annotation n-2'> i</span>s</div> <span class='annotation n-3'>on</span>ly a test for stackoverflow"如何编写下一个函数: $cont=0; $myAnnotationClass="placesOfTheWorld"; for ($annotationCharactersPositions as $position) { $tag="<span class='annotation $myAnnotationClass'>"; $source=addHTMLtoString($source,$tag,$position); $cont++; }考虑到在计算 $annotationCharactersPositions 数组中描述的字符时不得考虑输入字符串的 HTML 标签,并且必须考虑在 $source 文本中插入注释(即$tag)的每个以下注释的封装/注释。整个过程的想法是,给定输入文本(可能包含也可能不包含 HTML 标签),将注释一组字符(属于一个或多个单词),以便结果将具有选定的字符(通过数组它定义了每个注释的开始和结束位置)由 HTML 标记包装,该标记可以通过可变数量的 html 属性(名称、类、id、数据-*)变化(a、span、mark)。此外,结果必须是格式良好的有效 HTML文档,以便如果在多个注释之间有任何注释,则 html 应相应地写入输出。你知道任何图书馆或解决方案来做到这一点吗?也许 PHP DOMDocument 功能可能有用?¿但是如何将偏移量应用于 php DomDocument 函数?任何想法或帮助都受到欢迎。注 1:输入文本是 UTF-8 原始文本,嵌入了任何类型的 HTML 实体 (0-n)。注 2:输入标签可以是任何具有可变数量属性 (0-n) 的 HTML 标签。注 3:初始位置必须是包含的,最终位置必须是不包含的。即 1º 注释在第 2 个字符(包括第 2 个字符 'i')之前开始并在第 6 个字符之前结束(不包括 6 个字符 's')
1 回答
- 1 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消