2012-04-13 6 views
2

私は、UrLSのリストからメタ記述を引き出すスクリプトを作成しました(私は下に貼り付けました)、私はそのデータをCSV形式にエクスポートするエクスポート機能を持っています。いずれかのこれらの文字を削除するか、彼らは友好的であるので、それらを交換するための最良の方法は何iconv()またはutf8_encodeスクリプトUTF8をフレンドリーにするにはどうすればよいですか?

-

は唯一の問題は、のような例の制御文字のUTF-8セット以外の文字があるときに私のエクスポート機能が停止しています?また、私はこれを私のスクリプトにどのように入れますか?

<?php 
error_reporting(E_ALL); 
//ini_set("display_errors", 0); 
function parseUrl($url){ 
    //Trim whitespace of the url to ensure proper checking. 
    $url = trim($url); 
    //Check if a protocol is specified at the beginning of the url. If it's not, prepend 'http://'. 
    if (!preg_match("~^(?:f|ht)tps?://~i", $url)) { 
      $url = "http://" . $url; 
    } 
    //Check if '/' is present at the end of the url. If not, append '/'. 
    if (substr($url, -1)!=="/"){ 
      $url .= "/"; 
    } 
    //Return the processed url. 
    return $url; 
} 
//If the form was submitted 
if(isset($_GET['siteurl'])){ 
    //Put every new line as a new entry in the array 
    $urls = explode("\n",trim($_GET["siteurl"])); 
    //Iterate through urls 
    foreach ($urls as $url) { 
      //Parse the url to add 'http://' at the beginning or '/' at the end if not already there, to avoid errors with the get_meta_tags function 
      $url = parseUrl($url); 
      //Get the meta data for each url 
      $tags = get_meta_tags($url); 
      //Check to see if the description tag was present and adjust output accordingly 
      $tags = NULL; 
$tags = get_meta_tags($url); 
if($tags) 
echo "<tr><td>Description($url)</td><td>" .$tags['description']. "</td></tr>"; 
else 
echo "<tr><td>Description($url)</td><td>No Meta Description</td></tr>"; 
    } 
} 
?> 

輸出コード:

// ExportHTMLTable 

function ExportHTMLTable(tableId) 
{ 
    this.data=[]; 
    this.table=''; 
    this.tableId=tableId; 

    this.formId='exportForm'; 

    this.configuration={url:'../export.php',dataType:'json'}; 

    this.blockSend=0; 
    this.blockSize=100024; 

    this.requestNumber=0; 

    this.rowLastIndex=0; 
    this.cellLastIndex=0; 

    this.format=''; 

    // Export 
    this.exportDocument=function() 
    { 
     this.reset(); 
     if(!this.prepareData()) return(false); 

     this.send(); 
    }  

    // Export to CSV 
    this.exportToCSV=function() 
    { 
     this.format='csv'; 
     this.exportDocument(); 
    } 

    // Export to XML 
    this.exportToXML=function() 
    { 
     this.format='xml'; 
     this.exportDocument(); 
    } 

    // Reset variables 
    this.reset=function() 
    { 
     this.data=[]; 

     this.blockSend=0; 
     this.rowLastIndex=0; 
     this.cellLastIndex=0;  
     this.requestNumber=0; 
    } 

    // Get table 
    this.getTable=function() 
    { 
     this.table=$('#'+this.tableId); 
     if(this.table.length!=1) return(false); 

     return(true); 
    } 

    // Get data length 
    this.getDataLength=function() 
    { 
     var sum=0; 
     for(var rows in this.data) 
      sum+=this.data[rows].length; 

     return(sum); 
    } 

    // Remove form 
    this.removeForm=function() 
    { 
     var form=$('#'+this.formId); 
     if(form.length==1) form.remove(); 
    } 

    // Create field 
    this.createField=function(name,value) 
    { 
     var field=document.createElement('input'); 

     field.name=name; 
     field.value=value; 
     field.type='hidden'; 

     return($(field)); 
    } 

    // Prepare (extract from HTML table) data 
    this.prepareData=function() 
    { 
     if(!this.getTable()) return(false); 

     var self=this; 
     var r=0,c=0,tr=0,tc=0,length=0; 

     // Processing rows 
     this.table.children('tbody').children('tr').each(function() 
     { 
      c=0; 
      if(!$.isArray(self.data[r])) self.data[r]=[]; 

      // Processing cells 
      $(this).children('th,td').each(function() 
      {  
       length=$(this).attr('colspan')+self.data[r].length; 

       for(tc=0;tc<length;tc++) 
       { 
        if(self.data[r][tc]) continue; 
        self.data[r][tc]=$(this).text();  
       } 

       length=r+$(this).attr('rowspan'); 
       for(tr=r+1;tr<length;tr++) 
       { 
        if(!$.isArray(self.data[tr])) self.data[tr]=[]; 
        self.data[tr][c]=$(this).text(); 
       } 

       c++; 
      }); 

      r++; 
     }); 

     return(true);   
    } 

    // Send data 
    this.send=function() 
    { 
     var i=0,j=0; 

     this.requestNumber++; 

     this.removeForm(); 

     var rowsNumber=this.data.length; 
     var form=$(document.createElement('form')); 

     form.attr('method','post'); 
     form.attr('action',this.configuration.url); 

     for(i=this.rowLastIndex;i<rowsNumber;i++) 
     { 
      var cellsNumber=this.data[i].length; 
      for(j=this.cellLastIndex;j<cellsNumber;j++) 
      { 
       this.blockSend++; 

       var field=this.createField('exportTable['+i+']['+j+']',this.data[i][j]); 

       form.append(field); 

       if(this.blockSend>=(this.requestNumber*this.blockSize)) break; 
      } 

      if(this.blockSend>=(this.requestNumber*this.blockSize)) break; 
      this.cellLastIndex=0; 
     } 

     this.rowLastIndex=i; 
     this.cellLastIndex=j==0 ? 0 : j+1; 

     form.appendTo('body'); 

     if(this.requestNumber==1) 
      form.append(this.createField('requestFirst',1)); 

     if(this.blockSend==this.getDataLength()) 
     {  
      form.append(this.createField('requestLast',1)); 
      form.append(this.createField('format',this.format)); 
      form.submit().remove(); 
     } 
     else $.post(this.configuration.url,form.serialize(),$.delegate(this.send,this),'json'); 
    } 
} 
+0

問題の原因となる正確な行にエクスポート機能も表示できますか? – Aurimas

+0

エクスポート機能はいくつかにまたがっていますが、私はあなたが必要と思うものを投稿します:) – RuFFCuT

+0

@Aurimas okコードが追加されました! – RuFFCuT

答えて

0

私の良さ、あなたの投稿が間違って多くのものがあります。..

ファースト: - 制御文字とはみなされません。これは、UTF-8、latin1、およびASCIIで表示されます。

文字列内に有効なUTF-8ではない実際のバイトがある場合は、他のエンコーディングを処理する必要があります。これはlatin1である可能性が最も高いです。この場合、utf8_encodeを使用して文字列を変換できます。

盲目的にこれをやってはいけません。データがどこから来ているのか、それとも本当にlatin1なのかを最初に把握してください。 utf8_encodeは何かのためにバンドアシストとして応用されることもありますが、それは奇妙な振る舞いをしますが、それは物事を扱う良い方法ではありません。原則として、それはそれについてこのように考えるのに役立つかもしれない:

  • をアプリケーション内で、すべての文字列は常にUTF-8として周りに渡されることを確認してください。
  • 外部ソースからデータを受け取っている場合、使用する文字セットを把握し、必要に応じて変換します。

あなたが投稿したコードスニペットとの関連性はわかりません。

+0

@Everts私はあなたのようなコーディングでプロではない、ごめんなさい...それは私がそれを変換するように変更する必要があるデータをフェッチするコードであると私は仮定したので、私はそれを正常にエクスポートできましたか?印刷する前に問題の原因となっている文字を取り除くだけの方法はありませんか?私は毎回異なる情報源から来るので、彼らがどのような性格を持っているのか分かりません。 – RuFFCuT

関連する問題