php 在 500 字后将字符串插入到 html 中?包含 html 标签

标签 php html regex insert

如何在 500 字后插入一些字符串到 html 中? (不要破坏 html 标签)

function insert_string($text,$length,$insert) {
    preg_match_all('/<[^>]+>([^<]*)/',$text,$m,PREG_OFFSET_CAPTURE|PREG_SET_ORDER);
    foreach($m as $i=>$o){
        if($o[0][1]-$i>=$length)
        break;
        $t=substr(strtok($o[0][0]," \t\n\r\0\x0B>"),1);
        // ... can not think how to write continue.
    }
    //...
    return $output;
}


echo insert_string($text,'500','<strong> related tags </stong>');

应该将每个html标签正则表达式循环,记住某个位置和strlen()文本长度,然后确定在哪里插入一些字符串。但我想不出如何继续写下去。需要帮助。谢谢。

最佳答案

我刚刚发现我曾经或多或少遇到过类似的问题。我修改了我的编码,所以它(希望)解决了你的问题。 它并不完美,但对我有用:

//start 'config
$string = '<div id="mw-content-text"><p>Lorem ipsum</p><p><b>dolor</b> sit</p><p>amet</p></div>';
$words = array();
$insert_after_x_words = 3;
$insert_string = '<br>INSERT YOUR STUFF HERE<br>';
//end 'config'

$needle = '<';
$positions_tagopen = array();
$lastPos = 0;
while (($lastPos = strpos($string, $needle, $lastPos))!== false) {
  array_push($positions_tagopen, $lastPos);
  $lastPos = $lastPos + strlen($needle);
}

$needle = '>';
$positions_tagclose = array();
$lastPos = 0;
while (($lastPos = strpos($string, $needle, $lastPos))!== false) {
  array_push($positions_tagclose, $lastPos);
  $lastPos = $lastPos + strlen($needle);
}


$current_pos = 0;
for($i = 0; $i < count($positions_tagopen); $i++)
{
  $current_substring = substr($string,$current_pos,$positions_tagopen[$i]-$current_pos);
  $tmp = explode(" ",$current_substring);
  for($i2 = 0; $i2 < count($tmp); $i2++)
  {
    if(strlen($tmp[$i2])>0)
    {
      if($i2+1<count($tmp))
      {
        $tmp[$i2] = $tmp[$i2]." ";
      }
      array_push($words, $tmp[$i2]);                
    }
  }

  array_push($words, html_escape(substr($string,$positions_tagopen[$i], $positions_tagclose[$i]-$positions_tagopen[$i]).'>'));
  $current_pos = $positions_tagclose[$i]+1;
}

for($i = 0; $i < count($words); $i++)
{
  if(($i)%$insert_after_x_words == 0 && $i > 0)
  {
    echo $insert_string;
  }
  echo $words[$i];
}

关于php 在 500 字后将字符串插入到 html 中?包含 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25673437/

相关文章:

php - 以 PHP JQUERY AJAX 形式搜索并显示

javascript - 使用ajax获取php返回值

html - 使用angularjs刷新页面后如何保持链接处于事件状态?

ruby 正则表达式 gsub 字符串的特定部分

python - 使用正则表达式将自由文本解析为字典

javascript - 在 JavaScript 中匹配开始和结束引号(简单引号)

php - 将图像存储在mysql数据库中

PHP array_walk require_once

javascript - 如何在 HTML + Javascript/JQuery 中启用/禁用下拉列表框?

html - 不可见时滚动到底部