RE: [PHP] counting matches with eregi()

From: Date: Thu, 16 Nov 2000 01:52:05 +0000
Subject: RE: [PHP] counting matches with eregi()
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-25538@lists.php.net to get a copy of this message
I was going to point you to a function for php4 http://www.php.net/manual/function.substr-count.php it is used like this print substr_count("This is a test", "is"); // prints out 2 but the problem is that if you wanted to only match whole words and did something like print substr_count("This is a test", " is "); // prints out 1 But if you have a string like this it would break it I think. print substr_count("is a test", " is "); // would fail because it wouldn't be a match. Because the string begins with what you are looking for without the space. So then I thought that you might be able to do something like this instead <?php $string = "my house is a new house but not a big house in my household"; function count_whole_words($haystack, $needle){ $haystack = explode(" ", $haystack); $total = count($haystack); for($i=0;$i<$total;$i++){ if($haystack[$i]==$needle){ $j++; } } return $j; } echo "Total Found ".count_whole_words($string, "house"); ?> But then I found an even cooler soluction I hope this helps. Check out the comments at the link above, there are a couple of interesting solutions in php3 if you need them. Robert Zwink <A HREF="zwink.levitate.org"> http://zwink.levitate.org </A> -----Original Message----- From: Paul Tuohy [mailto:pablo_100@hotmail.com] Sent: Wednesday, November 15, 2000 10:09 PM To: php-general@lists.php.net Subject: [PHP] counting matches with eregi() I want to count the number of times a word appears in a string. I am using php3/linux Say I have a string: $string = "my house is a new house but not a big house in my household" I want to count how many times the word 'house' appears. If I use parentheses and include a $matches array in an eregi function, it stores partial matches, not a count of full matches in the entire string. Also the manual says that word boundary \b should work with php3, but the series of statments: $pattern = "\bhouse\b" $test = eregi($pattern, $string, $matches); return with no matches. I need to make sure that 'household' is not included in the count of whole words. what am i doing wrong? ____________________________________________________________________________ _________ Get more from the Web. FREE MSN Explorer download : http://explorer.msn.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.general (#25538) next »