Php 如何在每五次出现另一个字符串后插入该字符串?
我想使用PHP在字符的特定位置插入字符串,所以我有如下字符串:Php 如何在每五次出现另一个字符串后插入该字符串?,php,replace,Php,Replace,我想使用PHP在字符的特定位置插入字符串,所以我有如下字符串: $string = " <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p>
$string = "
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
<p>16</p>
<p>17</p>
";
$string = "
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
[next] //appended bb code
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
[next] //appended bb code
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
[next] //appended bb code
<p>16</p>
<p>17</p>
";
我有一个案例,我有一篇博文需要在第五次
、第十次
、第十五次
之后分页。我尝试的是找到并获得每个
的位置编号,并在第十段(
时添加[next]
bb代码)。这很有效
$string = "
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
<p>16</p>
<p>17</p>
";
$paginate = '[next]';
$found = 0;
for($i = 1; $i <= 99; $i++) {
$paragraph = strpos($string, "</p>", $found);
$found = $paragraph + 1;
if ($i == 10) {
$string = substr_replace($string, $paginate, $paragraph, 0);
}
}
echo $string;
当我试图将bb代码每5的倍数追加一次时,我感到很困难,因此非常感谢您的帮助。通过明智地使用
explode()
和内爆()
和th模%
操作符,您可以这样做
$string =
"<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
<p>16</p>
<p>17</p>
";
$paginate = '[next]';
$lines = explode("\n", $string);
foreach ($lines as $i => $line) {
if ($i != 0 && $i % 5 == 0) {
$new[] = $paginate;
}
$new[] = $line;
}
$string = implode("\n", $new);
echo $string;
$string=
“1
二,
三,
四,
五,
六,
七,
八,
九,
十,
十一,
十二,
十三,
十四,
十五
十六,
十七,
";
$paginate='[next]';
$lines=分解(“\n”,$string);
foreach($i=>$line形式的行){
如果($i!=0&&$i%5==0){
$new[]=$paginate;
}
$new[]=$line;
}
$string=内爆(“\n”,$new);
echo$字符串;
结果
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
[next]
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
[next]
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
[next]
<p>16</p>
<p>17</p>
1
二,
三,
四,
五,
[下一页]
六,
七,
八,
九,
十,
[下一页]
十一,
十二,
十三,
十四,
十五
[下一页]
十六,
十七,
通过明智地使用分解()
和内爆()
和th模数%
操作符,您可以这样做
$string =
"<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
<p>16</p>
<p>17</p>
";
$paginate = '[next]';
$lines = explode("\n", $string);
foreach ($lines as $i => $line) {
if ($i != 0 && $i % 5 == 0) {
$new[] = $paginate;
}
$new[] = $line;
}
$string = implode("\n", $new);
echo $string;
$string=
“1
二,
三,
四,
五,
六,
七,
八,
九,
十,
十一,
十二,
十三,
十四,
十五
十六,
十七,
";
$paginate='[next]';
$lines=分解(“\n”,$string);
foreach($i=>$line形式的行){
如果($i!=0&&$i%5==0){
$new[]=$paginate;
}
$new[]=$line;
}
$string=内爆(“\n”,$new);
echo$字符串;
结果
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
[next]
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
[next]
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
[next]
<p>16</p>
<p>17</p>
1
二,
三,
四,
五,
[下一页]
六,
七,
八,
九,
十,
[下一页]
十一,
十二,
十三,
十四,
十五
[下一页]
十六,
十七,
将所有内容匹配到第五个
标记,然后使用\K
将其全部忘记,然后注入您的bbcode
代码:()
或者完全尊重系统的换行顺序:
echo preg_replace('~(?:.+\K\R){5}~', "$0 [next]$0", $string);
将所有内容匹配到第五个
标记,然后使用\K
将其全部忘记,然后注入您的bbcode
代码:()
或者完全尊重系统的换行顺序:
echo preg_replace('~(?:.+\K\R){5}~', "$0 [next]$0", $string);