php替换指定html标签怎么写?

php替换指定html标签怎么写?,第1张

/**

* 去掉所有的HTML标记和JavaScript标记

*/

function replaceHtmlAndJs($document)

{

$document = trim($document)

if (strlen($document) <= 0) {

return $document

}

$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记

// "'([\r\n])[\s]+'",// 去掉空白字符

"'&(quot|#34)'i",// 替换 HTML 实体

"'&(amp|#38)'i",

"'&(lt|#60)'i",

"'&(gt|#62)'i",

"'&(nbsp|#160)'i"

) // 作为 PHP 代码运行

$replace = array ("",

"",

// "\1",

"\"",

"&",

"<",

">",

" "

)

return @preg_replace ($search, $replace, $document)

}

试编写代码供参考:

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

在正则表达式里面\1代表第一个原子组,即第一个()里匹配的内容。\2代表第二个... \\1多了一个\为了转义。 例如用数组的第二个原则来匹配"<ona=>",在匹配中即当做(<)ona=(>)来依次匹配。\1代表<\2代表>,匹配结果用\\1\\2所以去掉了中间的ona=。获得<>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6111135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存