在找到的字符串后面注入HTML并保留原始HTML

Inject HTML behind found string and preserve original HTML

本文关键字:HTML 注入 保留 原始 字符串      更新时间:2023-09-26

我需要在保留原始html的同时向文本中注入一些html。不管是javascript还是php。

举个例子。基础测试:

Die geis­tes– und sozi­al­wis­sen­schaft­li­che
Aus­ein­an­der­set­zung mit <em>Human Enhan­ce­ment</em> hat erneut zu
Debat­ten über den Sta­tus des Men­schen als Cyborg geführt.

然后我得到了与html剥离字符串相同的东西。搜索字符串:

Die geis­tes– und sozi­al­wis­sen­schaft­li­che
Aus­ein­an­der­set­zung mit Human Enhan­ce­ment hat erneut zu
Debat­ten über den Sta­tus des Men­schen als Cyborg geführt.

我可以根据第二个字符串进行搜索,但需要在第一个字符串后面注入一些html。结果:

Die geis­tes– und sozi­al­wis­sen­schaft­li­che
Aus­ein­an­der­set­zung mit <em>Human Enhan­ce­ment</em> hat erneut zu
Debat­ten über den Sta­tus des Men­schen als Cyborg geführt.<span>1</span>

这不是那么容易…:(我可以通过Regex和jQuery的.text((函数找到并替换字符串。但这并不能保留原始的html。

php:strpos+针的长度,得到它在字符串中的结束位置$index,然后是substra_replace($string,$insertion,$index,0(;

我可以通过用正则表达式修改搜索语句来解决这个问题。用替换了所有空格

's*?(?:<'/?[^>]*?>)?'s*?

示例:https://regex101.com/r/nI0vY7/1

<?php
$string = "I want to add before this element";
function Add($add, $before, $in_content)
    {
        $p = strpos($in_content, $before, 0);
        if ($p !== false)
           return substr_replace( $in_content , $add , $p, 0 );
        else
           return false;
    }
    $result = Add("paragraph ","this",$string);
    if($result !== false)
        echo $result;
?>  

你需要从html dom或数据库或文件中获取文本吗?

Javascript:

<div id="content">I want to add before this element</div>
<script>
var text_content = document.getElementById("content").innerText;
function Add(add, before, in_content)
    {
        var p = in_content.indexOf(before);
        if (p !== -1)
            return [in_content.slice(0, p), add, in_content.slice(p-1)].join('');
        else
            return false;
    }
    var result = Add("paragraph","this",text_content);
    if(result !== false)
        document.getElementById("content").innerText = result;
</script>