substr_​count 


string apg

COUNT the number of substring occurrences.





If $offset < 0 the counting starts from the end of the STRING.

This function outputs a WARNING if the $offset plus the $length is greater than the $haystack length.

A negative $length counts from the end of $haystack.



<?php

int substr_count 
str $haystack 
                            
str $needle [, 
                            
int $offset [, 
                            
int $length ]] ) 


where,

$haystack The input STRING

$needle 
The needle to be found

$offset 
The offset where to start counting

$length 
The maximum length after the 
                    specified offset to search 
for the substring

?>

$haystack


The STRING to search in.



$needle


The substring to search for.



$offset


The $offset where to start counting.



$length


The maximum $length after the specified $offset to search for the substring.



  1 EXERCISE   

<?php

$str01 
'A man is known by the company he keeps.';

$len_str01 strlen($str01);

$needle01 'he';

$offset01 0;

$length01 $len_str01;

$countneedle01 substr_count($str01
                                                 
$needle01
                                                 
$offset01
                                                 
$length01);

echo 
"There are $countneedle01 
 occurrences of '
$needle01' on STRING:<br>
$str01<br>";

echo 
'<br>Offset = ' $offset01 
'<br>Length = ' $length01 '<br>'

?>

  2 EXERCISE   

<?php

$str02 
'A man is known by the company he keeps.';

$len_str02 strlen($str02);

$needle02 'he';

$offset02 20;

$length02 $len_str02 20;

$countneedle02 substr_count($str02
                                                 
$needle02
                                                 
$offset02
                                                 
$length02);

echo 
"There are $countneedle02 
 occurrences of '
$needle02' on STRING:<br>
$str02<br>";

echo 
'<br>Offset = ' $offset02 
'<br>Length = ' $length02 '<br>'

?>

  3 EXERCISE   

<?php

$str03 
'A man is known by the company he keeps.';

$len_str03 strlen($str03);

$needle03 'he';

$offset03 mt_rand(-$len_str03,  $len_str03);

$length03 mt_rand(-$len_str03$len_str03);

$countneedle03 = @substr_count($str03
                                                     
$needle03
                                                     
$offset03
                                                     
$length03);

echo 
"There are $countneedle03
 occurrences of '
$needle03' on STRING:<br>
$str03<br>";

echo 
'<br>Offset = ' $offset03 
'<br>Length = ' $length03 '<br>'

?>

  4 EXERCISE   

<?php

$str04 
'A man is known by the company he keeps.';

$len_str04 strlen($str04);

$needle04 'HE';

$offset04 0;

$length04 $len_str04;

$countneedle04 substr_count($str04
                                                 
$needle04
                                                 
$offset04
                                                 
$length04);

echo 
"There are $countneedle04 
 occurrences of '
$needle04' on STRING:<br>
$str04<br>";

echo 
'<br>Offset = ' $offset04 
'<br>Length = ' $length04 '<br>'

?>

  5 EXERCISE   

<?php

echo "Testing basic operations.<br>";

try {
    
substr_count("""");
} catch (
\ValueError $e) {
    echo 
$e->getMessage() . "<br>";
}
try {
    
substr_count("a""");
} catch (
\ValueError $e) {
    echo 
$e->getMessage() . "<br>";
}

var_dump(substr_count("""a"));
echo 
'<br><br>';
var_dump(substr_count("""a"));
echo 
'<br><br>';
var_dump(substr_count(""chr(0)));
echo 
'<br><br><br>';
$a str_repeat("abcacba"100);
var_dump(substr_count($a"bca"));
echo 
'<br><br><br>';
$a str_repeat("abcacbabca"100);
var_dump(substr_count($a"bca"));
echo 
'<br><br>';
var_dump(substr_count($a"bca"200));
echo 
'<br><br>';
var_dump(substr_count($a"bca"200null));
echo 
'<br><br>';
var_dump(substr_count($a"bca"20050));
echo 
'<br><br>';
var_dump(substr_count($a"bca", -200));
echo 
'<br><br>';
var_dump(substr_count($a"bca", -200null));
echo 
'<br><br>';
var_dump(substr_count($a"bca", -20050));
echo 
'<br><br>';
var_dump(substr_count($a"bca", -200, -50));

?>