php 提取替换指定html内的标签

<strong>开心</strong><li>数列1</li><li>数列2</li><li>数列3</li><strong>无聊</strong><li>数列4</li... <strong>开心</strong>
<li>数列1</li>
<li>数列2</li>
<li>数列3</li>
<strong>无聊</strong>
<li>数列4</li>
<li>数列5</li>
<li>数列6</li>
<strong>兴奋</strong>
<li>数列7</li>
<li>数列8</li>
<li>数列9</li>
<strong>沮丧</strong>
<li>数列10</li>
<li>数列11</li>
<li>数列12</li>

问题一:提取<strong>标签内的内容的前3个
想要达到的效果为:开心,无聊,兴奋

问题二:提取<strong>标签内的所有内容,并加序列号和html标签
想要达到的效果为:<li>1、开心</li><li>2、无聊</li><li>3、兴奋</li><li>4、沮丧</li>

问题三:第1个<strong>不替换,将从第2个开始的<strong>替换成</ul><strong>,并且将从第1个开始的</strong>替换成</strong><ul>
想要达到的效果为:
<strong>开心</strong><ul>
<li>数列1</li>
<li>数列2</li>
<li>数列3</li>
</ul><strong>无聊</strong><ul>
<li>数列4</li>
<li>数列5</li>
<li>数列6</li>
</ul><strong>兴奋</strong><ul>
<li>数列7</li>
<li>数列8</li>
<li>数列9</li>
</ul><strong>沮丧</strong><ul>
<li>数列10</li>
<li>数列11</li>
<li>数列12</li>

先谢谢了
不懂这些,请直接给出问题1、2、3的答案
展开
 我来答
windblast
推荐于2018-01-08 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13624
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

试编写代码供参考:

<?php
$content = <<< TTTT
<strong>开心</strong>
<li>数列1</li>
<li>数列2</li>
<li>数列3</li>
<strong>无聊</strong>
<li>数列4</li>
<li>数列5</li>
<li>数列6</li>
<strong>兴奋</strong>
<li>数列7</li>
<li>数列8</li>
<li>数列9</li>
<strong>沮丧</strong>
<li>数列10</li>
<li>数列11</li>
<li>数列12</li>
TTTT;

/*
$pattern = '%<strong>(.*?)</strong>%i';
preg_match_all($pattern,$content ,$matches, PREG_PATTERN_ORDER);

echo '问题一:提取标签内的内容的前3个:<br/>'. "\r\n";
echo $matches[1][0] . ',' . $matches[1][1] . ',' . $matches[1][2] . '<br/><br/>';

echo "\r\n". "\r\n";

echo '问题二:提取标签内的所有内容,并加序列号和html标签:<br/>'. "\r\n";
for ($i=0;$i<count($matches[1]);$i++) {
    echo '<li>' . ($i+1) . '、' . $matches[1][$i] . '</li>' . "\r\n";
}

echo '<br/>';
echo "\r\n";

echo '问题三:替换成:<br/>'. "\r\n";
$pattern = '%<strong>(.*?)</strong>%i';
$temp = preg_replace($pattern, '</ul><strong>\1</strong><ul>',$content);
$temp = substr($temp,5).'</ul>';
echo $temp;

*/

$index = 0;

function doReplace($matches)
{
    global $index;

    $index++;
    if ($index<2) {
        return $index. '. ' . $matches[0]. '<ul>';
    } else {
        return '</ul>' . $index. '. ' . $matches[0].'<ul>';
    }
    
}

echo '问题三1:在每一个替换的 strong 前面也加上序列号:<br/>'. "\r\n";
echo "\r\n";
$pattern = '%<strong>(.*?)</strong>%i';
$temp = preg_replace_callback($pattern, 'doReplace',$content);
echo $temp.'</ul>';

?>

运行截图:

生成的 HTML 代码:

藤原子大雄
2018-01-07 · TA获得超过7197个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1759万
展开全部
先用preg_replace将<[^>]+>替换为空,也就是去掉了所有的html标记,然后再取字符就行了。
追问
这方面不是很懂,能直接给出问题1、2、3的答案吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式