我想在大字符串中使用“关键字”。这些关键字开始和结束使用my_keyword并且是用户定义的。如何在大字符串内搜索并查找两个*字符之间的内容并返回每个实例?PHP:两个字符之间的返回字符串
它可能会改变它的原因,部分关键字可以是用户定义的,如page_date_Y这可能会显示创建页面的年份。
因此,我只需要搜索并返回这些*字符之间的内容。这是可能的,或者如果我不知道“关键字”长度或者我可能是什么,是否有更好的方法来做到这一点?
我想在大字符串中使用“关键字”。这些关键字开始和结束使用my_keyword并且是用户定义的。如何在大字符串内搜索并查找两个*字符之间的内容并返回每个实例?PHP:两个字符之间的返回字符串
它可能会改变它的原因,部分关键字可以是用户定义的,如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"
}
太棒了!这么简单。谢谢! – 2010-01-12 07:27:19
简单而强大的答案......欢呼! – VKGS 2011-05-26 10:49:35
这里亚去:
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*');
爆炸的 “*”
输出
$ php test.php
best
its
most popular
I
如果要提取多数民众赞成由两个不同字符串(像括号,括号,html标签等东西)包围的字符串,下面是一个post更具体:
我发现了一个超级漂亮函数,它正是我想要的,但是,我希望把所有找到的关键字到一个数组。 http://www.justin-cook.com/wp/2006/03/31/php-parse-a-string-between-two-strings/有没有人有关于如何修改该脚本的提示? – 2010-01-12 07:24:29
我希望用户不能定义一个关键字,其中*) – zombat 2010-01-12 07:26:18
我正在使用上面的链接功能,你已经给予,它的工作适合我... – Avinash 2010-01-12 07:30:55