Inject HTML behind found string and preserve original HTML
我需要在保留原始HTML的同时将一些HTML注入到文本中。不管是用JavaScript还是用PHP。
举个例子。基础测试:
1 2 3 | 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剥离字符串相同的东西。搜索字符串:
1 2 3 | 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。结果:
1 2 3 | 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.<span>1</span> |
不是那么容易…:)我可以通过regex和jquery的.text()函数查找和替换字符串。但这并不能保留原始的HTML。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | I want to add before this element 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; |
我可以通过用regex修改搜索语句来解决这个问题。将所有空格替换为
1 | \s*?(?:<\/?[^>]*?>)?\s*? |
示例:https://regex101.com/r/ni0vy7/1
PHP:strpos+针的长度,以得到它在字符串中的结束位置作为$index,然后substr替换($string,$insertion,$index,0);