Reputation: 317
I am exporting data to CSV from a dynamic html table.
However this causes some problems because sometimes the data has control characters etc.
I need all these stripped out or made 'friendly' if possible?
I have no idea how to do this so could anyone help?
Here is my script:
<textarea name="siteurl" rows="10" cols="50">
<?php //Check if the form has already been submitted and if this is the case, display the submitted content. If not, display 'http://'.
echo (isset($_GET['siteurl']))?htmlspecialchars($_GET['siteurl']):"http://";?>
</textarea><br>
<input type="submit" value="Submit">
</form>
</div>
<div id="nofloat"></div>
<table class="metadata" id="metatable_1">
<?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>";
}
}
?>
</table>
<script type="text/javascript">
var exportTable1=new ExportHTMLTable('metatable_1');
</script>
<div>
<input type="button" onclick="exportTable1.exportToCSV()" value="Export to CSV"/>
<input type="button" onclick="exportTable1.exportToXML()" value="Export to XML"/>
</div>
</body>
Upvotes: 0
Views: 177
Reputation: 26501
I'm guessing you want something like:
echo "<tr><td>Description($url)</td><td>" . utf8_encode($tags['description']) . "</td></tr>";
Please specify what text is it that is displaying wrong, is it $tags['description']
?
Here are the manuals for function you probably need: mb_convert_encoding, utf8_encode.
Upvotes: 1
Reputation: 76395
Not sure if I understand the question correctly, but if all you want is an UTF-8 encoded CSV, you could just use utf8_encode()
on the data you're writing to the file.
Alternatively, if you want to omit control chars, you could check the lines for controle chars before writing them to the file using ctype_cntrl()
... and then, using either a regular expression to get rid of them, or refuse to write the lines all together.
Upvotes: 1