Jump to content

Text unwrap


swapper3d

Recommended Posts

Ok, here's the deal.

 

I'd like to save a text from a html text field into a MySQL database. Of course the text needs to be word wrapped, with <br /> for html view and all line breakers also needs to be replaced with <br />.

Next step is to be able to edit the text saved earlier in the database from within another html text field and save it back into (update) the database.

 

Problem is, I haven't been able to find a good way to "unwrap" the text (replace the <br />'s). I've tried different combinations of wordwrap(), nl2br() and str_replace(), but with no success. I've also been searching on the internet for a solution, but can't seem to find any info on this even though it seems to me as a not too unusual function.

 

I did actually find something on php.net's wordwrap function page but it does not seem to help me get any closer to my goal. I just keep ending up with regular blank spaces instead of the <br>'s...

 

$text = preg_replace('/[\t\r\n]+/', ' ', $text);

 

So, what would be the best and easiest way of doing this?

 

Thanks in advance!

 

Link to comment
Share on other sites

Alright, so what you want to do is

 

#1 - convert your newlines to <br /> when inserting into the database.  (that way when you echo the HTML view out, they show up the way you want).

 

Then

 

#2 - When you go to say...edit that same record, you want the <br /> to turn back into \n (newlines)

 

This function might help you with that (should preserve the newlines for textareas, and not show \n).  (Tho the poster above me is right, for what you want to do you would probably LOVE tinyMCE...great app)

 

<?php


function br2nl($string){
  $return=eregi_replace('<br[[:space:]]*/?'.
    '[[:space:]]*>',chr(13).chr(10),$string);
  return $return;
}
?> 

 

 

Link to comment
Share on other sites

Thank you for your replies!

 

mapleleaf,

looked into FckEditor a little but it doesn’t seem like what I’m looking for here, mainly because the site I’m building is suppose to be lightweight and kept very simple.

 

nafetski,

I've been playing around with your function during the weekend, and I actually think I almost have straitened this out by now. Though I’m sorry I can’t say that it helped me very much without some modifications.

 

eregi_replace('<br[[:space:]]*/?' . '[[:space:]]*>',chr(13).chr(10),$string);

Can you, please, for the record, explain exactly more in detail what this part does? :)

 

 

However I found out that my main problem was that I had to differ a \n from a "wordwrap" when stored in the database. I did this by formatting the text the following way before inserting it into the database:

 

 $wordwrap = nl2br(wordwrap($_POST["directive"], "75", " <br>")); 
//Note that nl2br() inserts '<br />' and (here) wordwrap inserts just '<br>'.
//Also note the blank space before '<br>', which is crucial in this case. 

 

And when I echo it back in the form text field for editing I used:

$nowordwrap = eregi_replace("<br>", "", $string);
$br2nl = eregi_replace("<br />", "", $nowordwrap);

 

I’m happy because it works! But, I have to admit that it does not seem like a possible solution if you look at the code… Probably nl2br() returns more than just “<br />”, maybe more like “<br />\n”?

 

Only problem with this is that wordwrap() does not wordwrap on very suitable places.. Anyone has a solution to this?

 

However, thanks! :)

Link to comment
Share on other sites

You should do this

$wordwrap = nl2br(wordwrap($some_var, "75", " <br>")); 
//Note that nl2br() inserts '<br />' and (here) wordwrap inserts just '<br>'.
//Also note the blank space before '<br>', which is crucial in this case. 

When you get the data out of your database, not when you insert it. All newlines are saved in the database, it just web browsers ignore newlines (whitespace) characters this is why you have to use <br /> to display a new line.

 

You'' save yourself a lot of trouble doing it this way.

Link to comment
Share on other sites

You should do this

$wordwrap = nl2br(wordwrap($some_var, "75", " <br>")); 
//Note that nl2br() inserts '<br />' and (here) wordwrap inserts just '<br>'.
//Also note the blank space before '<br>', which is crucial in this case. 

When you get the data out of your database, not when you insert it. All newlines are saved in the database, it just web browsers ignore newlines (whitespace) characters this is why you have to use <br /> to display a new line.

 

You'' save yourself a lot of trouble doing it this way.

^^ - In total agreement. Store all input in it's "native" format. Only transform it for display purposes at run time: i.e. nl2br(), date(), number_format(), etc.

Link to comment
Share on other sites

You should do this

$wordwrap = nl2br(wordwrap($some_var, "75", " <br>")); 
//Note that nl2br() inserts '<br />' and (here) wordwrap inserts just '<br>'.
//Also note the blank space before '<br>', which is crucial in this case. 

When you get the data out of your database, not when you insert it. All newlines are saved in the database, it just web browsers ignore newlines (whitespace) characters this is why you have to use <br /> to display a new line.

 

You'' save yourself a lot of trouble doing it this way.

^^ - In total agreement. Store all input in it's "native" format. Only transform it for display purposes at run time: i.e. nl2br(), date(), number_format(), etc.

 

Ahh, of course! I'll remember that. Sort of been inside this little box when it came to that...

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.