Solved

Inserting carriage returns in xml text

Posted on 2011-03-16
8
548 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
 
LVL 1

Author Comment

by:fionafenton
Comment Utility
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
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 
LVL 8

Expert Comment

by:Rik-Legger
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
Found solution myself
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Styling your websites can become very complex. Here I'll show how SASS can help you better organize, maintain and reuse your CSS code.
This article discusses how to create an extensible mechanism for linked drop downs.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.

763 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now