Например, у меня есть следующее:
$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP'; $array = array('html','css','javascript','ajax','html5','css3','jquery','PHP'); foreach($array as $ar){ //Check if one of the $array values exists in the $string } 
Я хочу искать только с конца строки $, поэтому, если значение $ array не находится в конце, ничего не произойдет, поскольку его не существует, PHP может быть любым из других значений в массиве $, поэтому я не знаю, t знать длину, на которую нужно найти значение, я имею в виду, что слово может быть повторено и разной длины .
  ie: $string = 'html .... , html is fantastic , I love html';  , теперь длина слова больше, и это может быть больше. 
Как найти последний только то, что длина слова?
Подход регулярного выражения может быть:
 <?php $string = 'PHP is a server side web programming language , PHP is amazing , I love PHP'; $array = array('html','css','javascript','ajax','html5','css3','jquery','PHP'); $escaped_array = array_map(function($value){ return preg_quote($value, '/'); }, $array); $regex = '/\b(' . implode('|', $escaped_array) . ')\b$/'; preg_match($regex, $string, $match); print_r($match); 
  preg_quote означает, что у вас есть специальные символы в вашем $array .  \b гарантирует, что это точное совпадение слов.  |  является «или».  О, и $ так соответствует совпадению в конце строки.  https://www.regular-expressions.info/anchors.html 
Демо: https://3v4l.org/8AYvu
однако регулярное выражение здесь не требуется:
 $string = 'PHP is a server side web programming language , PHP is amazing , I love PHP'; $array = array('html','css','javascript','ajax','html5','css3','jquery','PHP'); $words = explode(' ', $string); if(in_array(end($words), $array)){ echo 'Matched'; } 
Демо: https://3v4l.org/0LD5i
Вы можете проверить подстроку той же длины, что и поисковый запрос, в конце строки, которую вы ищете, и посмотреть, совпадают ли они.
 foreach ($array as $ar) { // negative number in substr will take a substring that many characters from the end if ($ar == substr($string, -strlen($ar))) { // found it. break; } } 
  Очень простой и эффективный способ достижения этого – использовать substr() и strrpos() для извлечения последнего слова из строки. 
  Затем вы можете $last_word поиск, если $last_word существует в $array с функцией in_array() . 
 $last_word = substr($string, strrpos($string, ' ') + 1); if (in_array($last_word, $array)) { // OK } 
  Попробуйте использовать фиксирующий якорь $ regex следующим образом: 
 $string = 'PHP is a server side web programming language , PHP is amazing , I love PHP'; $array = ['html', 'css', 'javascript', 'ajax', 'html5', 'css3', 'jquery', 'PHP']; foreach ($array as $ar) { // Check if one of the $array values exists in the $string if (preg_match("/$ar$/", $string)) { echo "Found $ar at the end of \$string"; break; } } 
Эти результаты:
 Found PHP at the end of $string 
Демо-версия eval.in
вы можете использовать strpos
 foreach($array as $ar){ if(strpos($ar,$string) !== false){ // $ar exist in string } } 
Если вы можете быть уверены, что строка $ всегда содержит человекочитаемое содержимое и поэтому разделяется пробелами, вы можете начать с взрыва строки в пробелах, а затем проверить последний элемент результирующего массива для существования в вашем списке слов.
Итак, что-то вроде этого должно получиться:
 <?php $elements = explode(" ", $string); $suspect = end($elements); if(in_array($suspect, $array)){ echo "The string '".$suspect."' was found in the string."; } ?> 
 <?php $people = array("Peter", "Joe", "Glenn", "Cleveland"); echo current($people) . "<br>"; /* to find first value from array */ echo end($people); /* to find last value from array */ ?>