Laravel 5.5 - sprawdź, czy ciąg zawiera dokładne słowa


W roku laravel mam
$ string
i
$ 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

Wynik
$ zawiera
jest prawdziwy, więc zostanie oznaczony jako zawierający słowo z czarnej listy (co nie jest poprawne). Dzieje się tak, ponieważ poniższa nazwa zawiera częściowo
ass
C

osioł

Andra
Jednak jest to częściowe dopasowanie, a
Cassandra
nie jest złym słowem, więc nie należy go oznaczać. Tylko jeśli słowo w wierszu dokładnie się zgadza, powinno zostać zaznaczone.
Jakieś pomysły, jak to zrobić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dokumenty:

https://laravel.com/docs/5.5/h ... tains
https://laravel.com/docs/5.5/h ... tains
Funkcja
str_contains
określa, czy dany ciąg zawiera daną wartość:
$contains = str_contains('This is my name', 'my');

Możesz również przekazać tablicę wartości, aby określić, czy dany ciąg zawiera którąkolwiek z następujących wartości:
$contains = str_contains('This is my name', ['my', 'foo']);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$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 wordsif ($matchFound) {
$words = array_unique($matches[0]);
foreach($words as $word) {//show bad words found
dd($word);
}}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

str_contains ()
działa z łańcuchami - nie z tablicami, ale można to zapętlić:
$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
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Metoda Laravel
Str :: zawiera ()
może sprawdzać wartości w zadaniu. Nie zapomnij użyć
Illuminate \ Support \ Str;
Działa na Laravel 7.x
Akceptuje również tablice wartości. Przykład:
$ string = 'Cassandra to czyste słowo, więc musi przejść test';
$blacklistArray = ['ass','ball sack'];
if(Str::contains($string, $blacklistArray)){return true;}// returns true

Chociaż może to nie być Twoja prośba

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się