Intereting Posts
Подключить PHP к Interbase: "undefined function ibase_connect ()" Как я могу заставить YAML игнорировать необработанный HTML в том же файле Как я могу написать в PHP функцию, которая модифицирует массив? PHP Guzzle: пустой ответ тела Как отправить недопустимый параметр выбора в WebTestCase с помощью symfony 2.3 Java SHA256 выводит разные хэширования на PHP SHA256? Как можно описать взаимоотношения каменной бумаги с ножницами между тремя предметами? Как вы можете сделать многомерный массив уникальным? Арабские строки из php в таблицы MySQL Нужен некоторый ответ о example.php / example Как подготовить оператор SQL с помощью POINT с помощью mysqli при использовании INSERT Захват итераций с использованием модуля php в нерегулярной последовательности Где я могу найти хороший парсер MediaWiki Markup в PHP? Предупреждение: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, boolean задан в PHP preg_replace – www или http: //

Как искать конец строки для текста существует в массиве?

Например, у меня есть следующее:

$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'; , теперь длина слова больше, и это может быть больше.

Как найти последний только то, что длина слова?

Solutions Collecting From Web of "Как искать конец строки для текста существует в массиве?"

Подход регулярного выражения может быть:

 <?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 */ ?>