[4]xlongwei工具类
百度API:xlongwei
这个人提供的接口很多啊,也很实用:Word转Html、Word转Pdf、属性配置、手机号段、微信公众号消息加密、微信公众号消息解密、二维码、关键词、分词、拼音、生僻字、微博短链接。但是很多都不感兴趣的,除了一个,那就是中文分词啊。以前某天突然对浏览器以及编辑器中的鼠标双击事件直接选中词组或者一段数字很好奇。然后问群里人,群里说是中文分词,之后看书(应该是《暗时间》)也无意看到。还扯出了开始思考好多巧合不是巧合的未解决的心理问题。虽然现在的知识以及技术对自然语言还无法处理,但是用接口感受一下还是不算过分吧。
1.Word转Html、Word转Pdf
【选择Word文档】触发file类型的input的click事件(代码里面用了jquery,也可以直接用js写这块就不用引入jq文件了)。然后点转换,执行上传+转换。最后的链接就是本服务器存储的来自API的处理文件
1 <html> 2 <head><meta charset="utf-8"> 3 <script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> 4 <script type="text/javascript"> 5 $(function(){ 6 $('#wordx').click(function(){ 7 $('#file').click(); 8 }); 9 }); 10 </script> 11 </head> 12 <body> 13 <form action="" method="post" enctype="multipart/form-data"> 14 <input type="file" name="file" id="file" style="display:none"/> 15 <input type="button" id="wordx" value="选择Word文档"> 16 <br /> 17 <input type="submit" name="submit" value="WORD转Html" /> 18 </form> 19 </body> 20 21 </html> 22 <?php 23 $maxSize=5*1024*1024;//5M 24 if(!isset($_FILES["file"]["error"])){ 25 exit; 26 } 27 if($_FILES["file"]["error"] > 0){ 28 echo "Error: " . $_FILES["file"]["error"] . "<br />"; 29 exit; 30 }else{ 31 /* echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 32 //echo "Type: " . $_FILES["file"]["type"] . "<br />"; 33 echo "Stored in: " . $_FILES["file"]["tmp_name"].'<br/>'; 34 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";*/ 35 36 $suffix=substr(strrchr($_FILES["file"]["name"], '.'), 1); 37 if($suffix!='doc' && $suffix!='docx'){ 38 echo '只允许doc和docx格式word文件'; 39 exit; 40 } 41 if($_FILES["file"]["size"]>$maxSize){ 42 echo '大于'.$maxSize/(1024*1024).'Mb'; 43 exit; 44 } 45 46 $name=date('YmdHis',time()).rand(1000,10000).'.'.$suffix;//拼接文件名 47 if (file_exists("upload/" . $name)){ 48 echo $_FILES["file"]["name"] . " already exists. "; 49 exit; 50 }else{ 51 $domain=$_SERVER['SERVER_NAME']; 52 $status=move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $name); 53 //echo "Stored in: " . "upload/" . $name; 54 $url="http://{$domain}/api/upload/{$name}"; 55 if ( (!file_exists ("upload/{$name}")) || !$status){ 56 echo '上传失败'; 57 exit; 58 }else{ 59 //echo "<a href='{$url}'>上传成功</a><br/>"; 60 //echo "上传成功<br/>"; 61 } 62 63 //Word转Html 64 65 $ch = curl_init(); 66 $url = 'http://apis.baidu.com/xlongwei/open/doc2html?url='.$url; 67 $header = array( 68 'apikey:百度API密钥', 69 ); 70 curl_setopt($ch, CURLOPT_HTTPHEADER , $header); 71 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 72 // 执行HTTP请求 73 curl_setopt($ch , CURLOPT_URL , $url); 74 $res = curl_exec($ch); 75 $data=json_decode($res,true); 76 //var_dump($data); 77 $htmlurl=NULL; 78 if(isset($data['domain'])&&isset($data['path'])){ 79 $htmlurl=$data['domain'].$data['path']; 80 $name=$name=date('YmdHis',time()).rand(1000,10000).'.html'; 81 $status=copy($htmlurl,"html/" . $name);//网络链接的文件不能用move_uploaded_file,用了copy可以 82 if($status){ 83 $htmlurl="http://{$domain}/api/html/{$name}"; 84 }else{ 85 //echo '挪动出错'; 86 //exit; 87 } 88 echo "<a href='$htmlurl'>Html转换完成</a>"; 89 90 }else{ 91 echo '服务器错误,请重试。'; 92 exit; 93 } 94 } 95 } 96 ?>
Pdf类似,只是接口处有不同。感觉效果还蛮好的嘛。肯定了,又不是相反的接口。
2.二维码
我的神器海螺呢,还想问问二维码什么原理呢。
3.中文分词
Ansj中文分词 这是一个ictclas的java实现.
好棒,这分词。之后顺便把拼音也嵌入到分词中去。
其中单字有多音字就会有好几个音,比如这个吃(chi ji)、吐(tu3 tu4),所以判断存不存在header(header 是拼音的首拼)然后空格分割取第一个(因为看到第一个大多数比较准确且自己也分辨不出第几个是最好的啊)就OK。
挑一个BUG:不了了之 bulelezhi,为什么不加成语字典呢。