我想在大字符串中使用“关键字”。这些关键字使用 my_keyword 开始和结束,并且是用户定义的。如何在一个大字符串中搜索并查找两个*字符之间的内容并返回每个实例?
可能会对其进行更改的原因是,关键字的某些部分可以由用户定义,例如 page_date_Y ,这可能会显示创建页面的年份。
所以,再一次,我只需要进行搜索并返回这些*字符之间的内容。这是可能的,或者如果我不知道“关键字”的长度或我可能是什么,有更好的方法吗?
答案 0 :(得分:42)
<?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"
}
答案 1 :(得分:3)
爆炸“*”
$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
答案 2 :(得分:0)
这里你去:
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*');
答案 3 :(得分:0)
如果你想提取一个由两个不同的字符串包围的字符串(如括号,括号,html标签等中的内容),这里有一篇更具体的帖子: