* 去掉所有的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=。获得<>欢迎分享,转载请注明来源:内存溢出
评论列表(0条)