在采集某视频网站的时候,可能会遇到他的视频地址源代码里面的是html代码,而这html代码如果是直接放在源代码里面的话 就会让视频没法运行.... 如图采集回来的视频信息
而如果从那边采集回自己的数据库里面 肯定也会存html代码.这样的话就需要把html和文本之间,本来之前是想在采集的时候就把他转换成浏览器能够读出来的文本格式存储.
解决办法:用dede的Html2Text 这个function定义的位置(include/inc/inc_fun_funString.php)
{dede:field.body function="Html2Text(@me)"/} 可是用这个函数之后 重新生成一次 并没有完全转换. 如图
<embed src="http://player.ku6.com/refer/6RUW7w0CXg8rI4xo7ywAIw../v.swf" width="480" height="400" allowscriptaccess="always" allowfullscreen="true" type="application/x-shockwave-flash" flashvars="from=ku6"></embed>
而如果视频想要正常播放 一段正常的代码是需要 < > " (双引号不加也可以,个人觉得加上还是比较好)
打开include/inc/inc_fun_funString.php
找到默认的代码 30行左右
$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
就可以看出 他这里做的操作不是替换,而是等于删除操作,把html代码的<>空格都删除
所以 我们需要做的是 把他们的htmm代码与文本之间对应起来替换即可.
这三行可以注释掉 以后可能会用到 .
替换为如下格式
//全角的空格替代为半角空格
$alltext = str_replace(" "," ",$alltext);
//< 替代为 <
$alltext = str_replace("<","<",$alltext);
//> 替代为 >
$alltext = str_replace(""","\"",$alltext);
//"替代为"
$alltext = str_replace(">",">",$alltext);
//将所有换行 替代为 <br/>
$alltext = preg_replace("/[\r\n]{1,}/isU","<br/>\r\n",$alltext);
在需要输出转换为文本类型的地方把代码修改一下 用这个定义好的function即可
例如: {dede:field.body function="Html2Text(@me)"/} /如果用Text2Html则可以逆向操作,举一反三