Robert Cummings wrote:
Nathan Rixham wrote:
Robert Cummings wrote:
Nathan Rixham wrote:
Nathan Rixham wrote:
Robert Cummings wrote:
tedd wrote:
At 1:02 PM -0400 5/22/10, Robert Cummings wrote:
tedd wrote:
If that is all (i.e., removing double linefeeds), then this
will do it:
$text_array = array();
$text_array = explode("\n\n", $input_text);
$output_text = implode("\n",$text_array);
Sorry tedd, this is broken. It doesn't solve problems with runs
of greater than 2 newlines which is even in the example :) I
would use the following instead which is also line break
agnostic with final output in the style for your system:
<?php
$data = preg_replace( "#[\r\n]+#", PHP_EOL, $input );
?>
Cheers,
Rob.
Rob:
It's not broken according to my "given", which was "If that is
all (i.e., removing double linefeeds), then this will do it:" My
code does exactly what was stated.
Actually, his comment didn't say double line feeds... his comment
said I want THIS to look like THAT. And THIS had a triple line
feed and THAT completely normalized it to a single line feed. I
realize you misunderstood the problem, but where I work, clients
don't think a solution based on incorrect presumptions is a valid
solution for a clearly defined problem :)
I did not catch there were more than two linefeeds in the OP's
problem. Doing more was something I did not address.
Also, the solution you provided works better this way: :-)
$input = preg_replace( "#[\r\n]+[[:space:]]+[\r\n]+#", "\n",
$input );
$input = preg_replace( "#[\r\n]+#", PHP_EOL, $input );
$input = trim( $input );
preg_replace( "/(\s)\s+/im", '\\1', $input );
:)
ahh just read the rest of this thread.. icnase it gets a bit
pedantic then here's a horizontal white space only one:
preg_replace( "/(\h)\h+/im", '\\1', $input );
and vertical only:
preg_replace( "/(\v)\v+/im", '\\1', $input );
(spot a pattern?)
Hi Nathan,
You may want to start testing your solutions. None have worked yet.
Not even close :)
filed under 'works for me'
<?php
$input = 'blah b asd as d
asd
a
sd
da
asd
d
asd
da';
echo preg_replace( "/(\s)\s+/im", '\\1', $input );
on PHP/5.2.8 produces:
blah b asd as d asd
a
sd
da asd
d
asd
da
unless I'm completely missing the elephant in the room here!
Doesn't appear to work on the following:
$input = '
1
2
3
4
5
6';
Additionally, your solution modifies lines that weren't asked to be
modified :) I realize it potentially makes for a more succinct solution
(if you ever get it to work properly in the general case) but it is not
a valid solution for the requested functionality-- The OP did not ask
for trimming of lines with content ;)
quote:
So in the file it would look like (from the original file the user uploads
that is)
1
2
3
4
5
6
but when the file is saved to the server it must look like
1
2
3
4
5
6
</quote>
the above produces what's required; and hence the vertical whitespace
only solution included too "/(\h)\h+/im"
what version are you on btw? not being an ass and actually am interested
in where it doesn't work (as I use the code on some important sites & in
some apps that are open sourced)
Best,
Nathan
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php