Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 333
  • Last Modified:

Extracting Whitespaces HTML/CGI (really easy)

(this is more of an html/cgi problem i guess)

How do i extract whitespaces from a TEXTAREA and count how many characters there are?



Thanks,
Ben
0
NeoHacker
Asked:
NeoHacker
  • 5
  • 5
  • 2
  • +1
1 Solution
 
jmcgOwnerCommented:
Please explain some more about what you are asking.

When your CGI script receives the request from the user's browser, the form variables, including the TEXTAREA will be accessible (if you are using the CGI module, as you probably should) as

$txt = param('name_of_text_area');

The character count you are after may be as simple as "length($txt)". As for extracting whitespaces, you need to explain: are you asking how to remove _extra_ whitespace from the TEXTAREA, such as trimming extra spaces from the front and end? Or double spaces between words? Or what?
0
 
ahoffmannCommented:
use CGI;
my $q = new CGI;
$txt=param('name_of_text_area');
$txt=~s/\s//g;@n=split(//,$txt)
print scalar @n;
0
 
jmcgOwnerCommented:
Ahoffman,

Okay, that's an interpretation: how many non-whitespace characters are there in the TEXTAREA? But why go through all those gyrations to get something that's equivalent to

print length($txt);

(I wonder if that needs a \n on the end?).
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
ahoffmannCommented:
hmm, probably folloing what is asked for:
  $txt=~s/[^\s]//g;@n=split(//,$txt);

depending on interpretation of "extract whitespaces" ;-)
0
 
NeoHackerAuthor Commented:
sorry, i didnt mean EXTRACT them, i meant keep the whitespaces but COUNT the characters WITHOUT INCLUDING the whitespaces.
- i hope that clears thing up
0
 
jmcgOwnerCommented:
Okay, Ahoffman had it right.

One recommended way to count characters is to use the 'tr' operator.

$count = $string =~ tr/ \t\r\n//c;

This does not actually change $string, but it counts all characters in the complement of the set specified as space, tab, carriage return, and line feed.
0
 
ahoffmannCommented:
($x=$txt)=~s/\s//g;
print scalar split(//,$x);
0
 
jmcgOwnerCommented:
Ahoffman, I don't want to criticize, but why do you take the extra (and expensive) step of splitting a string into an array of single characters just to count them? The number of characters in the string will always be more cheaply obtained using 'length'. Am I missing something?
0
 
ahoffmannCommented:
> .. don't want to criticize
don't worry, I'm learning too, sometimes, somehow ;-)
The extra step? you mean split? then you're correct.
But how about more perlish:
  $_=$txt; print tr/ \t\r\n//c;
0
 
ozoCommented:
Ot if you don't want $_ to trash $_
  print tr/ \t\r\n//c for $txt;
0
 
jmcgOwnerCommented:
Neohacker,

Hasn't your question been answered? I recommend that you accept one of Ahoffman's responses and close this question. Otherwise, if there's still something we can do for you, please ask.
0
 
ahoffmannCommented:
BTW, when using split() in a scalar context, it does not generate an array
0
 
NeoHackerAuthor Commented:
Ok, thanks ahoffman. Since you've helped me a lot on my questions, shouldn't i raise 20 points?

thanks,
ben
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 5
  • 5
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now