Solved

Inserting carriage returns in xml text

Posted on 2011-03-16
8
559 Views
Last Modified: 2013-11-18
I'm using PHP to query an MySql database and produce an xml file for another site.
I'm concating 3 of the database fields into one xml tag but want to add a carriage return between them. What should I be using?

$xmltext = $field1. "carriage return here".$field2. "carriage return here".$field3;

$xmltext = htmlspecialchars($xmltext);
$xmltext = addslashes($xmltext);

$_xml .="<Description>".urlencode($xmltext)."</Description>\r";
0
Comment
Question by:fionafenton
  • 5
  • 3
8 Comments
 
LVL 8

Expert Comment

by:Rik-Legger
ID: 35147144
You want to know how to add an seperator with mysql?
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws
mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
        -> 'First name,Second name,Last Name'

Open in new window


Or do you need some advice on what sign to use as seperator?
In that case i would just use something then never will be used in the field texts.
My suggestion is just a semicolon (;) but i'm not aware of your data.
0
 
LVL 1

Author Comment

by:fionafenton
ID: 35147219
No, I want to know what to use for a carriage return so that it displays correctly when inserted into an xml tag.
I've tried <br>, &#xA;,&#xD; and &#13;&#10;  but they display exactly as written when displayed on the final web page.
i.e.
text from field 1.&#13;&#10; text from field 2.&#13;&#10; text from field3.

Rather than
text from field 1.
text from field 2.
text from field 3.
0
 
LVL 8

Expert Comment

by:Rik-Legger
ID: 35147250
Than stop using this:
$xmltext = htmlspecialchars($xmltext);
$xmltext = addslashes($xmltext);

Open in new window


And start using htmlentities() and html_entity_decode
http://www.php.net/manual/en/function.htmlentities.php
http://php.net/manual/en/function.html-entity-decode.php
0
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 
LVL 1

Author Comment

by:fionafenton
ID: 35147628
I have no control over what happens to the data at the other end, so html-entity-decode is irrelevant.
If I use <br> as the carriage turn it shouldn't make any difference whether I use htmlspecialchars or htemlentities. However, when I use <br> it is displayed as that in the browser.
I'm sure it's to do with the way the other website (which I'm feeding into) handles the data. I think I need a non html way of inserting a carriage return. I have also tried /n and /r but these don't work either.
0
 
LVL 8

Expert Comment

by:Rik-Legger
ID: 35147651
If you don't have control over the other website and the other website does not 'decode' your encoded data than this is impossible.
0
 
LVL 1

Author Comment

by:fionafenton
ID: 35153349
I found the solution myself through trial and error.
I needed to use %0a and not urlencode it.

My code is now like this

$xmltext = $field1. "carriage return here".$field2. "carriage return here".$field3;

$xmltext = htmlspecialchars($xmltext);
$xmltext = addslashes($xmltext);

$_xml .="<Description>".urlencode(addslashes(htmlspecialchars($field1)))."%0A".urlencode(addslashes(htmlspecialchars($field2)))."%0A".urlencode(addslashes(htmlspecialchars($field3)))."%0A"."</Description>\r";
0
 
LVL 1

Accepted Solution

by:
fionafenton earned 0 total points
ID: 35153361
Sorry - my code is now like this (remove the first 3 lines of code above)

$_xml .="<Description>".urlencode(addslashes(htmlspecialchars($field1)))."%0A".urlencode(addslashes(htmlspecialchars($field2)))."%0A".urlencode(addslashes(htmlspecialchars($field3)))."%0A"."</Description>\r";
0
 
LVL 1

Author Closing Comment

by:fionafenton
ID: 35178868
Found solution myself
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How is this connection happening? 3 20
Uploading a CSV Data Import via PHP & MySql 3 29
Ahax pagination 9 32
Wordpress Only run code if on a certain page 11 22
Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question