php str_replace static到动态id

时间:2016-04-06 06:11:48

标签: php string replace

我有以下代码:

<strong>this is test1 </strong>
<strong>this is test2 </strong>
<strong>this is test3 </strong>
<strong>this is test4 </strong>

我需要将其更改为:

<div id="test1"><strong>this is test1 </strong></div>
<div id="test2"><strong>this is test2 </strong></div>
<div id="test3"><strong>this is test3 </strong></div>

用str_replace或者什么......有什么想法吗?由于文本来自CMS。当单击菜单项时,我需要将此文本的ID移动到子部分。

2 个答案:

答案 0 :(得分:0)

尝试:

for ($i = 1; $i <= 4; $i++) {

$test$i = str_replace('<strong>','<div id="test'.$i.'"><strong>',
    '<strong>this is test'.$i.'</strong>');

$test$i = str_replace('</strong>','</strong></div>',
    $test$i);

}

您现在拥有$ test1,$ test2,$ test3和$ test4。

编辑: 请注意,PHP是服务器端,您必须重新加载页面才能执行PHP代码。

编辑:新代码:

$text = '<strong>this is a test</strong><strong>this is a test</strong>';

function str_replacef($from, $to, $subject)
{
    $from = '/'.preg_quote($from, '/').'/';

    return preg_replace($from, $to, $subject, 1);
}

for ($i = 1; $i <= 2; $i++) {
$text = str_replacef('<strong>','<div id="'.$i.'"><strong2>',$text);
$text = str_replacef('</strong>','</strong2></div>',$text);
}

$text = str_replace('<strong2>','<strong>',$text);
$text = str_replace('</strong2>','</strong>',$text);

echo $text;

答案 1 :(得分:0)

您也可以使用preg_replace。

我正在工作时在手机上打字,但这样的事情以及Björns的for循环回答都会这样做。

preg_replace("/(<strong>.*<\/strong>)/", "<div id=test" . $i . ">$1</div>"