开发者

Actual input contents are not preseving on most of the browsers [FF,MSIE7/8 and etc]

I'm working on one application ( using PHP, javascript ). Below is the short description about my problem statement

There are two forms avaliable on my application, i.e. SourceFrm and targetFrm. I am taking input on first form i.e. Source开发者_Python百科Frm and doing processing on targetFrm.

Below is the input which I am taking from SourceFrm :

1) Enter your data (Identification of this input box id is 'inputdata' ):

2) Enter id ( Identification input box id is id ):

As per above input feed by user I am posting this data to targetFrm for further processiong.

On TargetFrm :

I am simply assigning inputdata value to php varible. The spaces which are in between of words are getting lost ( more than one spaces converting to one space).

e.g. User has added below data on input box and submitted

inputdata:

This is my     test.

Here observed that user has added 5 spaces in between 'my' and 'test' word. After assigning this input data to php variable. After that I printed this value Below content I am getting

Output:

This is my test.

More than one spaces is converting to one space. This behaviour I checked on all browsers like FF,MSIE7/8 opera, safari, chrome.

If have used '<pre>' before printing php variable i.e.:

print "<pre>";
print $inputdata;

At time spaces are not getting lost (I am getting exact content).

Here my conflict is how do I presrve exact contents without using '<pre>'. I have used encoding/decoding (htmlentitiesencode() and decode () )functionality, in my further data processing, so it may create some conflict if i replace spaces with &nbsp;. ( May conflict ll occur if i use &nbsp; instead space ).

Is anyone has any ideas, suggestions please suggest.

-Thanks


When you output your variables to HTML, they are parsed as HTML. Any additional white space is brought down to one space.

A simple fix would to replace all spaces with the &nbsp; html entitity to force browsers to display each space.

I wouldn't store the string with all the &nbps; in the database, but when you show it the &nbsp; would ensure that each space is seen.

EDIT

I mean only replace spaces on render...like:

print str_replace(' ', '&nbsp;', $inputdata);


HTML is capable of showing only one space. I'm not really sure why, but if you check your source code of rendered webpage containing your string, you'll see that it contains all the space, the browser just doesn't show it.

The same is for other space characters, as tabs.

The way to deal with it depends on type of your content. You can either replace spaces with &nbsp; or leave it as it is or do something completely different, i.e. strip more than one space down to one space.

It really depends on naturel of your data–the only real situation, when you would need more spaces than one, that comes to my mind is if you're trying to indent things with spaces, what actually isn't that great idea.

Edit: older resource:
http://www.sightspecific.com/~mosh/WWW_FAQ/nbsp.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜