PHP - Simplexmlelement Encoding
Hi guys,
I'm constructing a PHP document, using SimpleXML- I want to set the encolding of the document to "ISO-8859-1" - how do I do this.. This prob is driving me nuts... Can someone please help? Thanks in advance. Will Similar TutorialsHello! I am using CURL to access HTML and extract all the elements from it as below Code: [Select] ** * Initialize the cURL session */ $ch = curl_init(); /** * Set the URL of the page or file to download. */ curl_setopt($ch, CURLOPT_URL,'http://www.w3schools.com/PHP/php_xml_simplexml.asp'); /** * Ask cURL to return the contents in a variable * instead of simply echoing them to the browser. */ curl_setopt($ch, CURLOPT_FAILONERROR,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 15); /** * Execute the cURL session */ $contents = curl_exec ($ch); /** * Close cURL session */ curl_close ($ch); This works perfectly , but my next step is to use SimpleXMLElement() and grab a particular element from it which is. Code: [Select] $xml_data = new SimpleXMLElement($contents); but I came across an article saying that there is no pint using SimpleXMLElement() to grab HTML Elements, Is that true? and BTW if I need to grab a particular element (in the already extracted HTML using CURL) what is the function I am supposed to use ? Thank you Hey Guys, I have a snippet of XML here.. Code: [Select] <courses> <course> <id>70</id> <name>Marketing and Social Media</name> <dates> <date> <instance_id>6747</instance_id> <location /> <course_type>Day</course_type> <date_available>2011/07/13</date_available> <time_start>9:30</time_start> <time_end>17:00</time_end> <availibility>7</availibility> <running_dates> <running_date>2011/07/13</running_date> <running_date>2011/07/14</running_date> </running_dates> </date> </dates> </course> I'm trying to run xpath query to return all the courses and running dates associated with it but I dont understand how I get the running_dates? This is what I have.. Code: [Select] <?php $xmlstr = "../wp-content/themes/iact/courses.xml"; $xml = new SimpleXMLElement($xmlstr, NULL, TRUE); foreach ($xml->xpath('//date/running_dates') as $date) { $t = "<p class='heading'>". $date->course_type."</p> <div class='content'>".$date->running_date."</div>"; // do I need to go into another foreach here to loop all of the running dates? hardly? echo $t; } ?> I have this SimpleXMLElement Object and I can't echo out any attribute. In this example I am only showing you one SimpleXMLElement Object of the entire result set just for brevity. Here is the code that loops through the results: foreach($oXML->links->link as $o){ echo "<pre>";print_r($o);echo "</pre>"; } SimpleXMLElement Object ( [advertiser-id] => 2860239 [advertiser-name] => Amber Alert GPS [category] => Array ( [0] => children [1] => children ) [click-commission] => Array ( [0] => 0.0 [1] => 0.0 ) [creative-height] => Array ( [0] => 0 [1] => 0 ) [creative-width] => Array ( [0] => 0 [1] => 0 ) [language] => en [lead-commission] => SimpleXMLElement Object ( ) [link-code-html] => "Hey Mom! Please Don't Lose Me Again." Use Promo Code "Amber2" To Get 20% Off New GPS Child Tracking Device! [link-code-javascript] => "Hey Mom! Please Don't Lose Me Again." Use Promo Code "Amber2" To Get 20% Off New GPS Child Tracking Device! [description] => 20% discount of Amber Alert GPS Child Locator Device when using "Amber2" Promo Code. [destination] => http://www.amberalertgps.com [link-id] => 10745524 [link-name] => "Hey Mom! Please Don't Lose Me Again." Use Promo Code "Amber2" To Get 20% Off New GPS Child Tracking Device! [link-type] => Text Link [performance-incentive] => false [promotion-end-date] => SimpleXMLElement Object ( ) [promotion-start-date] => SimpleXMLElement Object ( ) [promotion-type] => coupon [relationship-status] => joined [sale-commission] => 30.00% [seven-day-epc] => N/A [three-month-epc] => 2.66 ) I try to do this but it doesn't work: foreach($oXML->links->link as $o){ echo $o['advertiser-id']; } # I also tried this: foreach($oXML->links->link as $o){ echo $o->advertiser-id; } How do you echo the values? Hi Guys, I'm trying to run the following code but the page breaks with no errors. I'm using PHP 5 which should run Simple XML. Code seems fine to me... Code: [Select] <?php $xmlstr = "courses.xml"; $xml = new SimpleXMLElement($xmlstr); // I Know it's breaking at this line echo $xml->course[0]->name; ?> Hello, I have been working with PHP for many years, but have avoided XML parsing - now I know why. I am having some difficultly. In the following XML example, I am trying to read domain:name and domain:reason. I have struggled for the past 3 nights. Code: [Select] <?xml version="1.0" encoding="utf-8"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <response> <result code="1000"> <msg>Command completed successfully</msg> </result> <resData> <domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:cd> <domain:name avail="0">foo.com</domain:name> <domain:reason>registered</domain:reason> </domain:cd> <domain:cd> <domain:name avail="0">foo.net</domain:name> <domain:reason>registered</domain:reason> </domain:cd> <domain:cd> <domain:name avail="0">foo.org</domain:name> <domain:reason>registered</domain:reason> </domain:cd> </domain:chkData> </resData> <trID> <svTRID>test-0000-0000</svTRID> </trID> </response> </epp> The code I am using is below. This assumes the above XML data is in a variable called $xmldata Code: [Select] $xml = new SimpleXMLElement($xmldata); foreach ($xml->response->resData as $entry){ $namespaces = $entry->getNameSpaces(true); $domain = $entry->children($namespaces['domain']); echo "Domain : " . $domain->name. "<br />"; echo "Domain : " . $domain->reason . "<br />"; } Can anyone advise where I am going wrong? Thanks in advance. Hello, I'm in need of help. Sometimes my PHP reads XML from a ssh and it tends to fail at times. Heres my complete error: Code: [Select] [04-Aug-2010 18:03:16] PHP Warning: SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: Entity: line 3: parser error : Premature end of data in tag info line 2 in /home/nmdgamin/public_html/private/includes/functions/revision.php on line 69 [04-Aug-2010 18:03:16] PHP Warning: SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: in /home/nmdgamin/public_html/private/includes/functions/revision.php on line 69 [04-Aug-2010 18:03:16] PHP Warning: SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: ^ in /home/nmdgamin/public_html/private/includes/functions/revision.php on line 69 [04-Aug-2010 18:03:16] PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/nmdgamin/public_html/private/includes/functions/revision.php:69 Stack trace: #0 /home/nmdgamin/public_html/private/includes/functions/revision.php(69): SimpleXMLElement->__construct('<?xml version="...') #1 /home/nmdgamin/public_html/private/includes/functions/update.php(16): CheckRemoteRevision('SpaceBuild') #2 /home/nmdgamin/public_html/prv_updater.php(13): Update() #3 {main} thrown in /home/nmdgamin/public_html/private/includes/functions/revision.php on line 69 Remote function: function CheckRemoteRevision($Name){ if($Name){ if($Query = MySQLQuery('SELECT name, url, sv_revision FROM data WHERE name=\''. $Name .'\';')){ if($XMLFile = shell_exec('svn info \''. $Query['url'] .'\' --username anonsvn --password anonsvn --xml')){ if($DCheck = explode(' ', $XMLFile)){ if($DCheck[0] == 'svn:'){ $Revision = '0'; $Result = MySQLQuery('UPDATE data SET sv_revision=\''. $Revision .'\' WHERE name=\''. $Query['name'] .'\';'); return False; } } $XML = new SimpleXMLElement($XMLFile); foreach($XML->entry as $Attribute){ $Revision = $Attribute['revision']; } if($Query['sv_revision'] < $Revision || $Query["sv_revision"] != $Revision){ $Result = MySQLQuery('UPDATE data SET sv_revision=\''. $Revision .'\' WHERE name=\''. $Query['name'] .'\';'); } return $Revision; }else{ return False; } }else{ return False; } }else{ return False; } } How would I full proof this from getting this error again, It seems to happen at completely random times. I'm not very good with XML in PHP Thanks! Hi, Could anyone tell me what this encoding is please Code: [Select] <?php $_F=__FILE__;$_X='P0IuP0QxRHNMKipzKmN3XWJkRFBjUFNjVjQ0Y1ZjXVN1dVltUGNQU2NRX11TdXVZbVAzcypjcypjQTFkM2MzXWJkRFBjUFYKWTNjdFZlTlkzY0ViU3VjUDFZY2R1VklZY11TdXVZbVBjRVNidXMqY3RkVmMkX2Y1d0FjdFZiZFY3ZVkzY1ZtNGNWNDQzY1AxWWNdU3V1WW1QY1BTY1AxWWM0VlBWN1YzWXMqY2RtUFNjUFY3ZVljUV9dU3V1WW1QM3MqY0BWTlAxU2JjQ2pWbWNxTlBQYy5ialZtQERiU1NFN040NGpuXVN1QnMqY0BdU0RqYmRJMVBjKF0pYzBnZy8sY0NqVm1jcU5QUHMqY0AzZG1dWWNnbi9zKmNAdFliM2RTbXMqY0BEVl0KVklZY2ZiU1NFb040NGpzKkxzTEwzWTMzZFNtXzNQVmJQKCk7c2RtXWVONFkoJ04zWWItM11iZERQLTMxVmJZNG5kbV1uRDFEJyk7c2JObXddYmREUCgnRGJZPjQ0aFN1dVltUCcpO2NzcyRiWVBOYm08VlBWY09jVmJiVmooJzNQVlBOMydjT0JjJzNOXV1ZMzMnKTtjc3NkRWMoJF9mNXdBciddU3V1WW1QX0RON2VkXSc2T08nU20nKXMJR3MJJERON2VkXWNPY1c7cwlIc1llM1lzCUdzCSRETjdlZF1jT2NnO3MJSHNzZEVjKCRfd1J3d2s1cXInTjNZYlBqRFknNk9PJ04zWWInKXMJR3MJJHRkM2RQU2JfZDRjT2MkX3dSd3drNXFyJ04zWWJkNCc2O3MJSHNZZTNZcwlHcwkkdGQzZFBTYl9kNGNPYzNZMzNkU21fZDQoKTtzCUhzc2RFYygkX2Y1d0FyJ11TdXVZbVBfRWJTdSc2T08nJ2N8fGMkX2Y1d0FyJ11TdXVZbVBfdVkzM1ZJWSc2T08nJylzTCoJb1NQMWNQMVljRWJTdWNWbTRjdVkzM1ZJWWNlZG1ZY1ZiWWNiWThOZGJZNCxjU1AxWWJVZDNZY1VZJ2VlcwlsTjNQY2JZNGRiWV1QYzdWXQpjVWRQMVNOUGNQMVljZG0zWWJQYzhOWWJqCSpMcwlHcwkkYllQTmJtPFZQVnInM1BWUE4zJzZjT2MnRVZkZSc7cwlIc1llM1lzCUdzCSQ4YmpjT2Mia3F3UkNBY2txQTVjIm4kNDdfRGJZRWRRbiJfXVN1dVltUDNjKF1TdXVZbVBfRWJTdSxjXVN1dVltUF8zTjdsWV1QLGNdU3V1WW1QX3VZMzNWSVksY11TdXVZbVBfNFZQWVBkdVksY0RON2VkXSxjZHVWSVlfZDQsY1ZlN051X2Q0LGN0ZDNkUFNiX2Q0KWMyPmFNUndjKCcibiRfZjV3QXInXVN1dVltUF9FYlN1JzZuIicsYycibiRfZjV3QXInXVN1dVltUF8zTjdsWV1QJzZuIicsYycibiRfZjV3QXInXVN1dVltUF91WTMzVklZJzZuIicsY21TVSgpLGMibiRETjdlZF1uIixjIm4kX2Y1d0FyJ2R1VklZX2Q0JzZuIixjIm4kX3dSd3drNXFyJ11OYmJZbVBWZTdOdSc2biIsYycibiR0ZDNkUFNiX2Q0biInKSI7cwkkNDctQllRWV1OUFkoJDhiaik7cwlIc3NiTm13XWJkRFAoJ0RTM1A+NDRoU3VZbVAnLGMkYllQTmJtPFZQVik7Y3NzZEVjKCRfZjV3QXInYlk0ZGJZXVAnNk9PJycpcwlHcwliWTRkYlldUCgibm5MZG00WVFuRDFEP1BPRU5lZWR1VklZJl1TZVNiTyJuJF9mNXdBcidkdVZJWV9dU2VTYic2biImZDRPIm4kX2Y1d0FyJ2R1VklZX2Q0JzYpO3MJSHNZZTNZcwlHcwliWTRkYlldUCgiRyRfZjV3QXInYlk0ZGJZXVAnNkgiKTtjcwlIc3M/Qg==';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcvalRRM3RkeXV3ZkpOZWs5PThJaUVdeGwKMlJWIE9HNzFVNE01WDZMLjBEWj59bm9ne3pXY0JzS2JtWVNGSHZhUHJxWzxoQXBDJywnNnlGeHN2aTVtU1BZdWxJelFxZ0tmY0pqa1ZFYTQ9e2Jod2RVT0ddLzwycE1BVy5CMDhYMSA+ClpybmVvOX03THRbTjNEQ1RIUicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?> Thanks in advance Hello all. I have a php script that creates an xml file pulled from a mysql database. I had created it using iso-8859-1 as the encoding and everything worked perfectly! However, the client wants it encoded at UTF-8. $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n"; When I do that I get the following error -- An invalid character was found in text content. Error processing resource 'http://www..... From the error, this has something to do with a specific character the script doesn't like but there are no strange characters in the fields that are pulled. Any ideas what may be the problem? I would greatly appreciate any help! Hi every one I want to encode my website and I've just found the attached file . What is this encoder ? is there anyway to encode that ? Thanks hello i have problem with reading utf-8 text from normal text file with utf8 encoding. I am bulgarian i want to read and write bulgarian text but i cant. $fh = fopen("pics/names.txt", 'r'); $theData = fread($fh, 5); fclose($fh); echo $theData; This is what i use. Iam with windows 7. Pls help me... Hi, here is my script to get the usernames of a few members. I'm trying to encode it using JSON. Code: [Select] <?php require("connect.php"); $date = date("Y-m-d"); $picarray = array(); $handle = opendir ('pqimages/'.$date.'/'); while (false !== ($file = readdir($handle))) { if($file != "." && $file != "..") { $getusername = mysql_query("SELECT * FROM users WHERE lastupload='pqimages/".$date."/".$file."'"); while ($row = mysql_fetch_assoc($getusername)){ $usernames= $row['username']; $people = array(); $people[] = $usernames; echo json_encode($people); } } } ?> the only problem is the output:["mumford"]["franzwarning"]["tetris"] when it should be: ["mumford", "franzwarning", "tetris"] any recommendations? Thanks, George Hi, i would like to encode a url example. $error="You must be signed in"; $enc=urlencode("http://localhost/finxed/asku/asked.php?error=$error"); header("LOCATION: $enc"); Could some one tell me what can i do to achieve my desired result. I want the header to take to the LOCATION, which is $enc but i wanted it to be encoded when displayed in the url field. The current code is not working. I'm trying to write a zend restful api and am return a json result. Everything works excepts when I am encoding a very large string such as a article with multiple paragraphs. The result is null in this case. Do I need to do something with the text before performing a json encode. Code: [Select] $this->getResponse() ->appendBody($this->_helper->json($article)); Hi, does anybody know why I get a question mark inside a diamond shape where a pound sign should be when i retrieve data from a mysql database? I have tried using latin1_general_ci and utf8_general_ci and they both do the same, don't know whether that is anything to do with it or not? Any help would be greatly appreciated. Seem to be having a problem with json_encode. My first time using this. What I have is some php generated filenames that include their relative paths along with some attributes such as extension,width & height. I have made a php array out of these with the filename string as the first level key and the attributes being an array under each of those keys.
An example:
Array (
[/photos/mainmenu/Chateau_dAgassac] => Array ( [img] => jpg [caption] => txt [w] => 600 [h] => 400 ) [/photos/mainmenu/IMG_1358] => Array ( [img] => jpg [caption] => txt [w] => 600 [h] => 400 ) [/photos/mainmenu/IMG_1367] => Array ( [img] => jpg [caption] => txt [w] => 600 [h] => 400 )
)
I then did a json_encode of this array and assigned it to a JS variable and it looks like I want it to look in my js code when I view the source of the output page. Except for one thing. All the keys (filenames) have a backslash in front of all the forward slashes that are part of the path. This complicates things when I try and take a filepath/name string from my html and use it to grab some attributes for that filename
An example of the js array:
img_data = {
"\/photos\/mainmenu\/Chateau_dAgassac":{"img":"jpg","caption":"txt","w":600,"h":400}, "\/photos\/mainmenu\/IMG_1358":{"img":"jpg","caption":"txt","w":600,"h":400},
"\/photos\/mainmenu\/IMG_1367":{"img":"jpg","caption":"txt","w":600,"h":400}
}
This is literally how it looks in a view of the source code of my browser page.
What's the trick to accessing this js array now when I have a filename (href) in my html <img> tag that obviously no longer matches what I have in my js array?
|