Мне нужно искать строку для определенного слова и иметь совпадение переменной. У меня есть определенный список слов в массиве:
$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 )