PHP: возвращает строку между двумя символами

Я хочу использовать «ключевые слова» в большой строке. Эти ключевые слова начинаются и заканчиваются с использованием my_keyword и определяются пользователем. Как в пределах большой строки я могу искать и находить то, что находится между двумя символами *, и возвращать каждый экземпляр?

Причина, по которой это может измениться, состоит в том, что части ключевых слов могут быть определены пользователем, например page_date_Y, которые могут показывать год, в который была создана страница.

Итак, опять же, мне просто нужно выполнить поиск и вернуть то, что находится между этими * символами. Возможно ли это, или есть лучший способ сделать это, если я не знаю длину «ключевого слова» или что бы я мог быть?

 <?php // keywords are between * $str = "PHP is the *best*, its the *most popular* and *I* love it."; if(preg_match_all('/\*(.*?)\*/',$str,$match)) { var_dump($match[1]); } ?> 

Вывод:

 array(3) { [0]=> string(4) "best" [1]=> string(12) "most popular" [2]=> string(1) "I" } 

Взорвать на "*"

 $str = "PHP is the *best*, *its* the *most popular* and *I* love it."; $s = explode("*",$str); for($i=1;$i<=count($s)-1;$i+=2){ print $s[$i]."\n"; } 

вывод

 $ php test.php best its most popular I 

Вот вам:

 function stringBetween($string, $keyword) { $matches = array(); $keyword = preg_quote($keyword, '~'); if (preg_match_all('~' . $keyword . '(.*?)' . $keyword . '~s', $string, $matches) > 0) { return $matches[1]; } else { return 'No matches found!'; } } 

Используйте эту функцию следующим образом:

 stringBetween('1 *a* 2 3 *a* *a* 5 *a*', '*a*'); 

Если вы хотите извлечь строку, заключенную двумя разными строками (например, что-то в скобках, скобках, тэгах html и т. Д.), Вот запись, более конкретная для этого:

Схват строки между разными строками