Получить слово из предложения, которое соответствует массиву PHP - PullRequest
1 голос
/ 28 мая 2020

В настоящее время у меня есть эта переменная в php

   @if(count($label_types) > 0)
   @foreach ($label_types as $label_type)
      @if($label_type)
        {{ $label_type->fldLabelTypeName }}
      @endif
   @endforeach
   @endif

, которая содержит следующие строки

Waterproof (This is waterproof)

Glossy

Normal

Теперь, поскольку waterproof has the (This is waterproof) в записях

Теперь я хочу возвращать только те слова, которые соответствуют этим ключевым словам

waterproof, glossy, normal

независимо от того, являются ли они uppercases, lowercases

Например, если случай: waterproofss с двойным s

, возврат будет waterproof

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете решить вашу проблему, используя регулярное выражение. Во-первых, вам нужно сопоставить свои случаи с помощью строкового ключа waterprofs|waterproffs|waterproffss и значения Waterproof для этих случаев. Ваш сопоставленный ключ будет работать как шаблон в регулярном выражении. preg_match проверит ваш шаблон в вашей строке. если шаблон совпадает, то он вернет его значение, которое вы определили на своей карте.

function getLabel(string $string)
{
    // You own custom map using regex, key-value pair,
    $matchersMap = [
        'waterproofs|waterproof' => 'Waterproof',
        'glossies|glossy' => 'Glossy',
        'normal' => 'Normal'
    ];

    $result = -1;

    foreach($matchersMap as $matchesKey => $replaceValue) {
        if (preg_match("/$matchesKey/", strtolower($string))) {
            $result = $replaceValue;
            break;
        }
    }

    return $result;
}

var_dump(getLabel("waterproof has the (This is waterproof)")); //Waterproof 

Надеюсь, вы получите минимальное представление о том, как вы покажете желаемое значение, используя регулярное выражение.

...