Мне нужно искать строку для определенного слова и иметь совпадение переменной. У меня есть определенный список слов в массиве:
$names = array ("Blue", "Gold", "White", "Purple", "Green", "Teal", "Purple", "Red"); $drag = "Glowing looks to be +Blue."; $match = "+Blue"; echo $match +Blue
Мне нужно выполнить поиск $drag
с $names
и найти совпадения с символом опции +
или -
и получить результат $match
.
Создайте регулярное выражение, соединяя члены массива с |
, и добавление необязательного [-+]
в начале:
$names = array ("Blue", "Gold", "White", "Purple", "Green", "Teal", "Purple", "Red"); $drag = "Glowing looks to be +Blue."; $pattern = '/[-+]?(' . join($names, '|') . ')/'; $matches = array(); preg_match($pattern, $drag, $matches); $matches = $matches[0]; var_dump($matches);
Вывод:
string(5) "+Blue"
Если вы хотите, чтобы вы соответствовали только +Blue
а не +Bluebell
, вы можете добавить совпадения слов границы, \b
, в начало / конец регулярного выражения.
Если вы хотите найти все экземпляры всех слов, вместо этого используйте preg_match_all
.
Да, вы можете, если используете prey_match
и некоторую логику регулярных выражений.
// Set the names array. $names_array = array ("Blue", "Gold", "White", "Purple", "Green", "Teal", "Purple", "Red"); // Set the $drag variable. $drag = "Glowing looks to be +Blue."; // Implode the names array. $names = implode('|', $names_array); // Set the regex. $regex = '/[-+]?(' . $names . ')/'; // Run the regex with preg_match. preg_match($regex, $drag, $matches); // Dump the matches. echo '<pre>'; print_r($matches); echo '</pre>';
Выход:
Array ( [0] => +Blue [1] => Blue )