Laravel 5.5 - 检查字符串是否包含确切的单词
Laravel 5.5 - Check if string contains exact words
在laravel中,我有一个$string
和一个$blacklistArray
$string = 'Cassandra is a clean word so it should pass the check';
$blacklistArray = ['ass','ball sack'];
$contains = str_contains($string, $blacklistArray); // true, contains bad word
$contains
的结果为真,所以这将被标记为包含黑名单词(这是不正确的)。这是因为下面的名称部分包含 ass
C屁股andra
但是,这是部分匹配,Cassandra
不是坏词,因此不应标记。仅当字符串中的单词完全匹配时,才应对其进行标记。
知道如何完成这个吗?
str_contains()
适用于字符串 - 不适用于数组,但您可以循环它:
$string = 'Cassandra is a clean word so it should pass the check';
$blacklistArray = ['ass','ball sack'];
$flag = false;
foreach ($blacklistArray as $k => $v) {
if str_contains($string, $v) {
$flag = true;
break;
}
}
if ($flag == true) {
// someone was nasty
}
$blacklistArray = array('ass','ball sack');
$string = 'Cassandra is a clean word so it should pass the check';
$matches = array();
$matchFound = preg_match_all(
"/\b(" . implode($blacklistArray,"|") . ")\b/i",
$string,
$matches
);
// if it find matches bad words
if ($matchFound) {
$words = array_unique($matches[0]);
foreach($words as $word) {
//show bad words found
dd($word);
}
}
文档:https://laravel.com/docs/5.5/helpers#method-str-contains
str_contains
函数判断给定字符串是否包含给定值:
$contains = str_contains('This is my name', 'my');
您还可以传递一组值来确定给定的字符串是否包含以下任何值:
$contains = str_contains('This is my name', ['my', 'foo']);
Laravel Str::contains()
方法可以检查作品的价值。别忘了use Illuminate\Support\Str;
适用于 Laravel 7.x
也接受值数组。实例:
$string = 'Cassandra is a clean word so it should pass the check';
$blacklistArray = ['ass','ball sack'];
if(Str::contains($string, $blacklistArray)){return true;}
// returns true
虽然可能不是您的确切要求
在laravel中,我有一个$string
和一个$blacklistArray
$string = 'Cassandra is a clean word so it should pass the check';
$blacklistArray = ['ass','ball sack'];
$contains = str_contains($string, $blacklistArray); // true, contains bad word
$contains
的结果为真,所以这将被标记为包含黑名单词(这是不正确的)。这是因为下面的名称部分包含 ass
C屁股andra
但是,这是部分匹配,Cassandra
不是坏词,因此不应标记。仅当字符串中的单词完全匹配时,才应对其进行标记。
知道如何完成这个吗?
str_contains()
适用于字符串 - 不适用于数组,但您可以循环它:
$string = 'Cassandra is a clean word so it should pass the check';
$blacklistArray = ['ass','ball sack'];
$flag = false;
foreach ($blacklistArray as $k => $v) {
if str_contains($string, $v) {
$flag = true;
break;
}
}
if ($flag == true) {
// someone was nasty
}
$blacklistArray = array('ass','ball sack');
$string = 'Cassandra is a clean word so it should pass the check';
$matches = array();
$matchFound = preg_match_all(
"/\b(" . implode($blacklistArray,"|") . ")\b/i",
$string,
$matches
);
// if it find matches bad words
if ($matchFound) {
$words = array_unique($matches[0]);
foreach($words as $word) {
//show bad words found
dd($word);
}
}
文档:https://laravel.com/docs/5.5/helpers#method-str-contains
str_contains
函数判断给定字符串是否包含给定值:
$contains = str_contains('This is my name', 'my');
您还可以传递一组值来确定给定的字符串是否包含以下任何值:
$contains = str_contains('This is my name', ['my', 'foo']);
Laravel Str::contains()
方法可以检查作品的价值。别忘了use Illuminate\Support\Str;
适用于 Laravel 7.x
也接受值数组。实例:
$string = 'Cassandra is a clean word so it should pass the check'; $blacklistArray = ['ass','ball sack'];
if(Str::contains($string, $blacklistArray)){return true;}
// returns true
虽然可能不是您的确切要求