Я желаю использовать "ключевые слова" в большой строке. Эти ключевые слова запускают и заканчивают использование 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*');