PHP: возвращает строку между двумя символами
Я хочу использовать "ключевые слова" в большой строке. Эти ключевые слова начинаются и заканчиваются с использованием my_keyword и определяются пользователем. Как в пределах большой строки я могу искать и находить то, что находится между двумя символами *, и возвращать каждый экземпляр?
Причина, по которой это может измениться, состоит в том, что части ключевых слов могут быть определены пользователем, например page_date_Y, которые могут показывать год, в который была создана страница.
Итак, опять же, мне просто нужно выполнить поиск и вернуть то, что находится между этими * символами. Возможно ли это, или есть лучший способ сделать это, если я не знаю длину ключевого слова или что бы я мог быть?
Ответы
Ответ 1
<?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"
}
Ответ 2
Вставить в "*"
$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
Ответ 3
Здесь ya go:
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*');
Ответ 4
Если вы хотите извлечь строку, заключенную двумя разными строками (например, что-то в скобках, скобках, тэгах html и т.д.), здесь будет более конкретным сообщение:
Схват строки между разными строками