我需要在保留原始html的同时向文本中注入一些html。不管是javascript还是php。
举个例子。基础测试:
Die geistes– und sozialwissenschaftliche
Auseinandersetzung mit <em>Human Enhancement</em> hat erneut zu
Debatten über den Status des Menschen als Cyborg geführt.
然后我得到了与html剥离字符串相同的东西。搜索字符串:
Die geistes– und sozialwissenschaftliche
Auseinandersetzung mit Human Enhancement hat erneut zu
Debatten über den Status des Menschen als Cyborg geführt.
我可以根据第二个字符串进行搜索,但需要在第一个字符串后面注入一些html。结果:
Die geistes– und sozialwissenschaftliche
Auseinandersetzung mit <em>Human Enhancement</em> hat erneut zu
Debatten über den Status des Menschen 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>