Php 在字符串中插入标记

Php 在字符串中插入标记,php,regex,Php,Regex,想知道这里是否有人能帮我,有没有相对简单的方法在一定数量的单词之后插入一些带有给定字符串的标记 例如: $string = 'Helping customers to do something everyday'; 在每三个字后面插入一个,这样输出就可以 Helping customers to </span><span> do something everyday 帮助客户每天做一些事情 我在猜测某种正则表达式的用法,但它们不是我的强项,或者可能在for循环中 /

想知道这里是否有人能帮我,有没有相对简单的方法在一定数量的单词之后插入一些带有给定字符串的标记

例如:

$string = 'Helping customers to do something everyday';
在每三个字后面插入一个,这样输出就可以

Helping customers to </span><span> do something everyday
帮助客户每天做一些事情
我在猜测某种正则表达式的用法,但它们不是我的强项,或者可能在for循环中

/////////////////////////////

更新:

为帮助的人干杯:

我灵机一动,想出了这个函数,它正是我所需要的:

function insert_tags ( $string )
{
$string = explode ( " ", $string );

$count = 0;
$result = '';

foreach ( $string as $s )
{   
    if ( $count == 3 )
    {
        $result .= '</span><span>' . $s . ' ';
        $count = 1;
    }
    else
    {
        $result .= $s . ' ';
    }

    $count++;
}

return $result;
  }
函数插入标签($string)
{
$string=分解(“,$string);
$count=0;
$result='';
foreach($s形式的字符串)
{   
如果($count==3)
{
$result.=''.$s';
$count=1;
}
其他的
{
$result.=$s.';
}
$count++;
}
返回$result;
}
这是怎么回事

((?:\b.+?\b ?){3})
替换为:

<span>$1</span>
1美元
因此,在您的代码中:

$string = 'Helping customers to do something everyday';
$pattern = '/((?:\b.+?\b ?){3})/';
$replacement = '<span>$1</span>';
echo preg_replace($pattern, $replacement, $string);
$string='帮助客户每天做一些事情';
$pattern='/((?:\b.+?\b?{3})/”;
$replacement='$1';
echo preg_replace($pattern,$replacement,$string);
我的正则表达式测试仪显示如下结果:

<span>Helping customers to </span><span>do something everyday</span>
帮助客户每天做一些事情

我对PHP不是百分之百的熟悉,所以让我知道你的进展如何

您可以使用正则表达式:

`preg_replace('/\b\w+\b{3}/', '\0 </span><span>' ...`
`preg_replace('/\b\w+\b{3}/','\0'`
但如果单词之间只有一个空格,那么使用数组可能会更好:

$words = explode(' ', $string);
$chunks = array_chunk($words, 3);
$final = '';
foreach ($chunks as $words) {
   $final .= implode(' ', $words) . ' </span><span>';
}
$words=explode(“”,$string);
$chunks=array\u chunk($words,3);
$final='';
foreach($words形式的块){
$final.=内爆(“”,$words)。“”;
}

请注意,这两种方法都可能有一个最终的
,因此如果这是一个问题,您必须手动修剪它,或者只是改进我所做的。

这有点像@tandu的响应,但我更喜欢这种方法。它不会在行的末尾放置span标记

function insert_tags($string) {
    $exString = explode(' ', $string);
    $newString = array();
    for($i=0; $i < sizeof($exString); $i++) {
        if($i % 3 == 0 and $i != 0) {
            $newString[] = '</span><span>';
        }
        $newString[] = $exString[$i];
    }
    $newString = implode(' ', $newString);
    return $newString;
}
函数插入标签($string){
$exString=分解(“”,$string);
$newString=array();
对于($i=0;$i
测试返回:

Helping customers to <span></span> do something everyday
Helping customers to <span></span> do something everyday <span></span> okay there a
Helping customers to <span></span> do something everyday <span></span> okay there a <span></span> a
Helping customers to <span></span> do something everyday <span></span> okay there
帮助客户每天做一些事情
帮助客户每天做一些事情好的有吗
帮助客户每天做一些事情好的有
帮助客户每天做点什么好吗

对不起,伙计,PHP没有做到这一点。它只是显示了第一个单词!哎呀,忘记了模式中的斜杠,现在就试试。在进行计数时最好使用for循环。请看下面我的答案:)。。此外,您的代码将返回
帮助客户完成某项工作
在执行之前请注意缺少的空格。这是固定的空间后,你的span标记忽略我的意见,缺少空间--