<?php
$patternsArray = array();
$matchesArray = array();
$text = "
Cassie, slipped on some glass and cut her ass!<br>
'Goshdamnit! Who left this damn mess out?' she cried.<br>
'Well, SHOOT, you should be more careful!' Mary laughed.<br>
'Hello! Why don't you clean up after yourself!' Cassie screamed.<br>
'Go to HELL!' Mary yelled back.<br>
Then suddenly, blood started shooting everywhere.XXX
";
$patternsArray[] = '/\basss?\b/i';
$patternsArray[] = '/damn/i';
$patternsArray[] = '/\bshoots?\b/i';
$patternsArray[] = '/\bhells?\b/i';
$patternsArray[] = '/XXX/i';
$cleanText = preg_replace_callback($patternsArray, function($matches) use (&$matchesArray) {
list($word) = $matches;
$matchesArray[] = $word;
return str_repeat("*", strlen($word));
}, $text);
var_dump($cleanText);
var_dump($matchesArray);
string(335) "
Cassie, slipped on some glass and cut her ***!<br>
'Gosh****it! Who left this **** mess out?' she cried.<br>
'Well, *****, you should be more careful!' Mary laughed.<br>
'Hello! Why don't you clean up after yourself!' Cassie screamed.<br>
'Go to ****!' Mary yelled back.<br>
Then suddenly, blood started shooting everywhere.***
"
array(6) {
[0]=>
string(3) "ass"
[1]=>
string(4) "damn"
[2]=>
string(4) "damn"
[3]=>
string(5) "SHOOT"
[4]=>
string(4) "HELL"
[5]=>
string(3) "XXX"
}
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
string(335) "
Cassie, slipped on some glass and cut her ***!<br>
'Gosh****it! Who left this **** mess out?' she cried.<br>
'Well, *****, you should be more careful!' Mary laughed.<br>
'Hello! Why don't you clean up after yourself!' Cassie screamed.<br>
'Go to ****!' Mary yelled back.<br>
Then suddenly, blood started shooting everywhere.***
"
array(6) {
[0]=>
string(3) "ass"
[1]=>
string(4) "damn"
[2]=>
string(4) "damn"
[3]=>
string(5) "SHOOT"
[4]=>
string(4) "HELL"
[5]=>
string(3) "XXX"
}