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

发布网友 发布时间:2022-04-22 06:53

我来回答

2个回答

热心网友 时间:2022-04-06 06:53

试编写代码供参考:

<?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 代码:

热心网友 时间:2022-04-06 08:11

先用preg_replace将<[^>]+>替换为空,也就是去掉了所有的html标记,然后再取字符就行了。追问这方面不是很懂,能直接给出问题1、2、3的答案吗?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com