手机
当前位置:查字典教程网 >编程开发 >php教程 >解析php利用正则表达式解决采集内容排版的问题
解析php利用正则表达式解决采集内容排版的问题
摘要:做采集经常遇到的问题是内容排版问题,用了一些时间写了个用正则替换html标签和样式的函数,共享下。复制代码代码如下:/***格式化内容*@p...

做采集经常遇到的问题是内容排版问题,用了一些时间写了个用正则替换html标签和样式的函数,共享下。

复制代码 代码如下:

/**

* 格式化内容

* @param string $content 内容最好统一用utf-8编码

* @return string

* !本函数需要开启tidy扩展

*/

function removeFormat($content) {

$replaces = array (

"/<font.*?>/i" => '',

"/</font>/i" => '',

"/<strong>/i" => '',

"/</strong>/i" => '',

"/<span.*?>/i" => '',

"/</span>/i" => '',

"/<div.*?>/i" => "<p>",

"/</div>/i" => "</p>",

"/<>/i"=>'',

/* "/<table.*?>/i" => '',//遇到有表格的内容就不要启用

"/</table>/i" => '',

"/<tbody.*?>/i" => '',

"/</tbody>/i" => '',

"/<tr.*?>/i" => '<p>',

"/</tr>/i" => '</p>',

"/<td.*?>/i" => '', */

"/style=.+?['|"]/i" => '',

"/class=.+?['|"]/i" => '',

"/id=.+?['|"]/i"=>'',

"/lang=.+?['|"]/i"=>'',

//"/width=.+?['|"]/i"=>'',//不好控制注释掉

//"/height=.+?['|"]/i"=>'',

"/border=.+?['|"]/i"=>'',

"/face=.+?['|"]/i"=>'',

"/<br.*?>[]*/i" => "</p><p>",

"/<iframe.*?>.*</iframe>/i" => '',

"//i" => ' ',//空格替换掉

"/<p.*?>[ |x{3000}|rn]*/ui" => '<p>',//替换半角、全角空格,换行符,用排除写入数据库时产生的编码问题

);

$config = array(

//'indent' => TRUE, //是否缩进

'output-html' => TRUE,//是否是输出xhtml

'show-body-only'=>TRUE,//是否只获得到body

'wrap' => 0

);

$content = tidy_repair_string($content, $config, 'utf8');//先利用php自带的tidy类库修复html标签,不然替换的时候容易出现各种诡异的情况

$content = trim($content);

foreach ( $replaces as $k => $v ) {

$content = preg_replace ( $k, $v, $content );

}

if(strpos($content,'<p>')>6)//部分内容开头可能缺失<p>标签

$content = '<p>'.$content;

$content = tidy_repair_string($content, $config, 'utf8');//再修复一次,可以去除html空标签

$content = trim($content);

return $content;

}

【解析php利用正则表达式解决采集内容排版的问题】相关文章:

php生成圆角图片的方法

php将HTML表格每行每列转为数组实现采集表格数据的方法

在线短消息收发的程序,不用数据库

BS结构中使用PHP访问ORACLE LOB

正则表达式语法

用PHP将数据导入到Foxmail

PHP中的traits实现代码复用使用实例

php递归调用删除数组空值元素的方法

PHP cURL初始化和执行方法入门级代码

正确的PHP匹配UTF-8中文的正则表达式

精品推荐
分类导航