finding newlines [message #183918] |
Mon, 25 November 2013 16:12 |
bill
Messages: 310 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
I am trying to find the first line bread in a string
where string = "Hand Carried by Patient\n\nTo Whom It May
Concern:\n\nR...."
This code does not work: $pos = strpos($progressNote,"\n\n");
it returns pos = false
where do I err?
bill
|
|
|
Re: finding newlines [message #183919 is a reply to message #183918] |
Mon, 25 November 2013 16:32 |
Christoph Michael Bec
Messages: 207 Registered: June 2013
Karma: 0
|
Senior Member |
|
|
bill wrote:
> I am trying to find the first line bread in a string
> where string = "Hand Carried by Patient\n\nTo Whom It May
> Concern:\n\nR...."
>
> This code does not work: $pos = strpos($progressNote,"\n\n");
> it returns pos = false
>
> where do I err?
Um, the code should work, if $progressNote does contain a *double*
newline character. Have you confirmed that $progressNote indeed
contains what you expect? You may try looking for a *single* newline
character:
$pos = strpos($progressNote, "\n");
--
Christoph M. Becker
|
|
|
Re: finding newlines [message #183920 is a reply to message #183918] |
Mon, 25 November 2013 16:34 |
Richard Yates
Messages: 86 Registered: September 2013
Karma: 0
|
Member |
|
|
On Mon, 25 Nov 2013 11:12:17 -0500, bill <william(at)TechServSys(dot)com>
wrote:
> I am trying to find the first line bread in a string
> where string = "Hand Carried by Patient\n\nTo Whom It May
> Concern:\n\nR...."
>
> This code does not work: $pos = strpos($progressNote,"\n\n");
> it returns pos = false
>
> where do I err?
>
> bill
Best to include your actual code so typos can be spotted. This works,
but I do not know how it differs from yours:
<?php
$progressNote="Hand Carried by Patient\n\nTo Whom It May
Concern:\n\n";
$pos = strpos($progressNote,"\n\n");
echo $pos;
exit;
// result is 23 which is correct
?>
|
|
|
Re: finding newlines [message #183921 is a reply to message #183918] |
Mon, 25 November 2013 20:11 |
Denis McMahon
Messages: 634 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On Mon, 25 Nov 2013 11:12:17 -0500, bill wrote:
> I am trying to find the first line bread in a string where string =
> "Hand Carried by Patient\n\nTo Whom It May Concern:\n\nR...."
>
> This code does not work: $pos = strpos($progressNote,"\n\n");
> it returns pos = false
>
> where do I err?
If you're trying to find lines in a multiline string, you could try
splitting the string on newline characters:
$lines=explode("\n",$progressNote);
Then you can work through $lines looking for relevant ones.
Note that you may have some empty strings in $lines, and also that you
may have \r\n where you expect \n.
A better mechanism may be:
$lines=explode("\n",preg_replace("/[\r\n]+/","\n",$progressNote));
Which will change all instances of any combination of one or more
newlines and / or carriage returns to a single newline, and then split
the string on the newline character.
--
Denis McMahon, denismfmcmahon(at)gmail(dot)com
|
|
|
Re: finding newlines [message #183922 is a reply to message #183918] |
Mon, 25 November 2013 21:18 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
bill wrote:
> I am trying to find the first line bread in a string
> where string = "Hand Carried by Patient\n\nTo Whom It May
^^^^^^^^^^^^^^
For some reason I read “tomato” there at first ;-)
> Concern:\n\nR...."
>
> This code does not work: $pos = strpos($progressNote,"\n\n");
> it returns pos = false
No, it does not:
$ php -r 'var_dump(strpos("Hand Carried by Patient\n\nTo Whom It May",
"\n\n"));'
int(23)
> where do I err?
$progressNote !== "Hand Carried by Patient\n\n…"
PHP’s string functions are tricky; when in doubt, RTFM.
PointedEars
--
Danny Goodman's books are out of date and teach practices that are
positively harmful for cross-browser scripting.
-- Richard Cornford, cljs, <cife6q$253$1$8300dec7(at)news(dot)demon(dot)co(dot)uk> (2004)
|
|
|
Re: finding newlines [message #183923 is a reply to message #183921] |
Mon, 25 November 2013 21:23 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
Denis McMahon wrote:
> A better mechanism may be:
>
> $lines=explode("\n",preg_replace("/[\r\n]+/","\n",$progressNote));
>
> Which will change all instances of any combination of one or more
> newlines and / or carriage returns to a single newline, and then split
> the string on the newline character.
$lines = preg_split('/[\\r\\n]+/', $progressNote);
or (having empty lines as empty-string array elements)
$lines = preg_split('/\\r?\\n|\\r/', $progressNote);
See also: <http://php.net/file>
PointedEars
--
When all you know is jQuery, every problem looks $(olvable).
|
|
|
Re: finding newlines [message #183924 is a reply to message #183918] |
Mon, 25 November 2013 21:36 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 11/25/2013 11:12 AM, bill wrote:
> I am trying to find the first line bread in a string
> where string = "Hand Carried by Patient\n\nTo Whom It May
> Concern:\n\nR...."
>
> This code does not work: $pos = strpos($progressNote,"\n\n");
> it returns pos = false
>
> where do I err?
>
> bill
How did you get the string in $progressNote? Did you set it yourself,
or was it possibly sourced from a web page?
What do you get if you echo $progressNote?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: finding newlines [message #183932 is a reply to message #183919] |
Tue, 26 November 2013 14:36 |
bill
Messages: 310 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
On 11/25/2013 11:32 AM, Christoph Michael Becker wrote:
> bill wrote:
>
>> I am trying to find the first line bread in a string
>> where string = "Hand Carried by Patient\n\nTo Whom It May
>> Concern:\n\nR...."
>>
>> This code does not work: $pos = strpos($progressNote,"\n\n");
>> it returns pos = false
>>
>> where do I err?
>
> Um, the code should work, if $progressNote does contain a *double*
> newline character. Have you confirmed that $progressNote indeed
> contains what you expect? You may try looking for a *single* newline
> character:
>
> $pos = strpos($progressNote, "\n");
>
the text above is the exact text I am searching.
The statement is:
$pos = stripos($progressNote,"\n\n");
echo basename(__FILE__) . ": " . __LINE__ . ":pos= $pos, first
string = >" . substr($progressNote, 0, $pos). "<<br />";
|
|
|
|
Re: finding newlines [message #183934 is a reply to message #183933] |
Tue, 26 November 2013 18:46 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
Denis McMahon wrote:
> On Mon, 25 Nov 2013 20:11:40 +0000, Denis McMahon wrote:
>> $lines=explode("\n",preg_replace("/[\r\n]+/","\n",$progressNote));
>
> or of course:
>
> $lines=preg_split("/[\r\n]+/",$progressNote);
Now that I told you. However, “of course” *that* is questionable: within
double-quotes, “\r” and “\n” are expanded as *string* escape sequences,
before preg_split() sees them. When in doubt, use either single-quotes or
double-quotes with double-backslash.
I prefer to use double-backslash also with single-quotes in case someone
decides in the future to support more escape sequences. The resulting code
style also is more consistent because with trailing backslash you *must* use
double-backslash unless you want to escape the string delimiter: '\' is
likely to become a syntax error (unterminated string literal); '\\' is not.
PointedEars
--
Danny Goodman's books are out of date and teach practices that are
positively harmful for cross-browser scripting.
-- Richard Cornford, cljs, <cife6q$253$1$8300dec7(at)news(dot)demon(dot)co(dot)uk> (2004)
|
|
|
Re: finding newlines [message #183936 is a reply to message #183924] |
Wed, 27 November 2013 10:11 |
bill
Messages: 310 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
On 11/25/2013 4:36 PM, Jerry Stuckle wrote:
> On 11/25/2013 11:12 AM, bill wrote:
>> I am trying to find the first line bread in a string
>> where string = "Hand Carried by Patient\n\nTo Whom It May
>> Concern:\n\nR...."
>>
>> This code does not work: $pos = strpos($progressNote,"\n\n");
>> it returns pos = false
>>
>> where do I err?
>>
>> bill
>
> How did you get the string in $progressNote? Did you set it
> yourself, or was it possibly sourced from a web page?
>
> What do you get if you echo $progressNote?
>
>
I create the progress note in another script that is POSTed to
this one.
looking at progress note tells me that is is as I said, actually,
I copied it from the display of the debug statement:
echo basename(__FILE__) . ": " . __LINE__ .
":progNote=>$progressNote<<br />";
As it should work, and does not, I will spend more time on it
tomorrow (when I have the time.
thanks
bill
|
|
|
Re: finding newlines [message #183940 is a reply to message #183936] |
Wed, 27 November 2013 15:56 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
bill wrote:
> I create the progress note in another script that is POSTed to
> this one.
>
> looking at progress note tells me that is is as I said, actually,
> I copied it from the display of the debug statement:
>
> echo basename(__FILE__) . ": " . __LINE__ .
> ":progNote=>$progressNote<<br />";
^
This is almost certainly an error. Also, you want to htmlspecialchars()
etc. the value of $progressNote.
PointedEars
--
When all you know is jQuery, every problem looks $(olvable).
|
|
|
Re: finding newlines [message #183941 is a reply to message #183936] |
Wed, 27 November 2013 16:47 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 11/27/2013 5:11 AM, bill wrote:
> On 11/25/2013 4:36 PM, Jerry Stuckle wrote:
>> On 11/25/2013 11:12 AM, bill wrote:
>>> I am trying to find the first line bread in a string
>>> where string = "Hand Carried by Patient\n\nTo Whom It May
>>> Concern:\n\nR...."
>>>
>>> This code does not work: $pos = strpos($progressNote,"\n\n");
>>> it returns pos = false
>>>
>>> where do I err?
>>>
>>> bill
>>
>> How did you get the string in $progressNote? Did you set it
>> yourself, or was it possibly sourced from a web page?
>>
>> What do you get if you echo $progressNote?
>>
>>
> I create the progress note in another script that is POSTed to this one.
>
> looking at progress note tells me that is is as I said, actually, I
> copied it from the display of the debug statement:
>
> echo basename(__FILE__) . ": " . __LINE__ .
> ":progNote=>$progressNote<<br />";
>
> As it should work, and does not, I will spend more time on it tomorrow
> (when I have the time.
>
> thanks
>
> bill
OK, in that case you have the characters '\' and 'n'. In PHP,
"\n" is a newline character. You need to either escape the '\' as in
"\\n\\n", or use single quotes around your string, i.e. '\n\n'.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: finding newlines [message #183946 is a reply to message #183941] |
Thu, 28 November 2013 16:09 |
bill
Messages: 310 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
On 11/27/2013 11:47 AM, Jerry Stuckle wrote:
> On 11/27/2013 5:11 AM, bill wrote:
>> On 11/25/2013 4:36 PM, Jerry Stuckle wrote:
>>> On 11/25/2013 11:12 AM, bill wrote:
>>>> I am trying to find the first line bread in a string
>>>> where string = "Hand Carried by Patient\n\nTo Whom It May
>>>> Concern:\n\nR...."
>>>>
>>>> This code does not work: $pos = strpos($progressNote,"\n\n");
>>>> it returns pos = false
>>>>
>>>> where do I err?
>>>>
>>>> bill
>>>
>>> How did you get the string in $progressNote? Did you set it
>>> yourself, or was it possibly sourced from a web page?
>>>
>>> What do you get if you echo $progressNote?
>>>
>>>
>> I create the progress note in another script that is POSTed to
>> this one.
>>
>> looking at progress note tells me that is is as I said,
>> actually, I
>> copied it from the display of the debug statement:
>>
>> echo basename(__FILE__) . ": " . __LINE__ .
>> ":progNote=>$progressNote<<br />";
>>
>> As it should work, and does not, I will spend more time on it
>> tomorrow
>> (when I have the time.
>>
>> thanks
>>
>> bill
>
> OK, in that case you have the characters '\' and 'n'. In PHP,
> "\n" is a newline character. You need to either escape the '\'
> as in "\\n\\n", or use single quotes around your string, i.e.
> '\n\n'.
>
Very good - that was it.
Thanks,
bill
|
|
|
Re: finding newlines [message #183948 is a reply to message #183940] |
Thu, 28 November 2013 16:42 |
bill
Messages: 310 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
On 11/27/2013 10:56 AM, Thomas 'PointedEars' Lahn wrote:
> bill wrote:
>
>> I create the progress note in another script that is POSTed to
>> this one.
>>
>> looking at progress note tells me that is is as I said, actually,
>> I copied it from the display of the debug statement:
>>
>> echo basename(__FILE__) . ": " . __LINE__ .
>> ":progNote=>$progressNote<<br />";
> ^
> This is almost certainly an error. Also, you want to htmlspecialchars()
> etc. the value of $progressNote.
>
>
> PointedEars
>
actually, not an error. I use the open and close bracket
characters to help me see the string and not miss spaces on
either end.
bill
|
|
|
Re: finding newlines [message #183951 is a reply to message #183948] |
Thu, 28 November 2013 19:20 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
bill wrote:
> On 11/27/2013 10:56 AM, Thomas 'PointedEars' Lahn wrote:
>> bill wrote:
>>> I create the progress note in another script that is POSTed to
>>> this one.
>>>
>>> looking at progress note tells me that is is as I said, actually,
>>> I copied it from the display of the debug statement:
>>>
>>> echo basename(__FILE__) . ": " . __LINE__ .
>>> ":progNote=>$progressNote<<br />";
>> ^
>> This is almost certainly an error. Also, you want to htmlspecialchars()
>> etc. the value of $progressNote.
>
> actually, not an error. I use the open and close bracket
> characters to help me see the string and not miss spaces on
> either end.
“<br />” is either XHTML or HTML5 syntax. In HTML, in XHTML and in other
XML applications, “<” and ”>” are special markup characters (Start-Tag Open
[STAGO] and Tag Close [TAGC]). You need to escape literal ”<” (in order to
prevent it from being parsed as STAGO, at least when a letter follows) and
you should escape literal ”>” (if only to avoid confusion). PHP's
htmlspecialchars() also does that for you.
<http://validator.w3.org/>
PointedEars
--
Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
-- Richard Cornford, cljs, <f806at$ail$1$8300dec7(at)news(dot)demon(dot)co(dot)uk>
|
|
|
Re: finding newlines [message #183953 is a reply to message #183948] |
Fri, 29 November 2013 00:57 |
Denis McMahon
Messages: 634 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On Thu, 28 Nov 2013 11:42:50 -0500, bill wrote:
> On 11/27/2013 10:56 AM, Thomas 'PointedEars' Lahn wrote:
>> bill wrote:
>>
>>> I create the progress note in another script that is POSTed to this
>>> one.
>>>
>>> looking at progress note tells me that is is as I said, actually,
>>> I copied it from the display of the debug statement:
>>>
>>> echo basename(__FILE__) . ": " . __LINE__ .
>>> ":progNote=>$progressNote<<br />";
>> ^
>> This is almost certainly an error. Also, you want to
>> htmlspecialchars()
>> etc. the value of $progressNote.
> actually, not an error. I use the open and close bracket characters to
> help me see the string and not miss spaces on either end.
If you're outputting this in an xhtml document, that's an incredibly bad
idea. You should use > and < instead.
echo basename(__FILE__) . ": " . __LINE__ .
":progNote=>$progressNote<<br />";
--
Denis McMahon, denismfmcmahon(at)gmail(dot)com
|
|
|
Re: finding newlines [message #183990 is a reply to message #183934] |
Sat, 30 November 2013 16:50 |
somewhere
Messages: 2 Registered: November 2013
Karma: 0
|
Junior Member |
|
|
Thomas 'PointedEars' Lahn wrote:
> Now that I told you. However, “of course” *that* is questionable:
> within double-quotes, “\r” and “\n” are expanded as *string* escape
> sequences,
> before preg_split() sees them. When in doubt, use either single-quotes
> or double-quotes with double-backslash.
Are you sure?
|
|
|
Re: finding newlines [message #183995 is a reply to message #183990] |
Sun, 01 December 2013 16:11 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
Wizard-Of-Oz wrote:
^^^^^^^^^^^^
> Thomas 'PointedEars' Lahn wrote:
>> Now that I told you. However, “of course” *that* is questionable:
>> within double-quotes, “\r” and “\n” are expanded as *string* escape
>> sequences, before preg_split() sees them. When in doubt, use either
>> single-quotes or double-quotes with double-backslash.
>
> Are you sure?
Who's asking?
PointedEars
--
Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
-- Richard Cornford, cljs, <f806at$ail$1$8300dec7(at)news(dot)demon(dot)co(dot)uk>
|
|
|