想知道从字符串中获取单词的最佳方法,但是在指定单词之后和之前的单词之前的任何单词。
示例:
$string = "Radio that plays Drum & Bass music";
然后我想回应一下鼓& amp;低音'部分,所以播放后的任何单词和音乐前的任何单词(在播放和音乐之间)
任何想法?
杰米
答案 0 :(得分:2)
一种方式:
preg_match('/plays (.*) music/', $string, $match);
echo $match[1];
答案 1 :(得分:1)
将preg_match_all()
与使用lookaround assertions和word boundaries的正则表达式一起使用:
preg_match_all('/(?<=\bplays\b)\s*(.*?)\s*(?=\bmusic\b)/', $string, $matches);
<强>解释强>
(?<=
- 正面观察的开始(如果前面有)\bplays\b
- 单词plays
)
- 结束积极的外观\s*
- 匹配单词(.*?)
- 匹配(并捕获)\s*
- 匹配单词(?=
- 积极前瞻的开始(如果跟着)\bmusic\b
- 单词music
)
- 积极前瞻的结束如果您希望单词是动态的,可以用变量替换它们(使用字符串连接,sprintf()
或类似)。在插入正则表达式中的单词之前逃避它们很重要 - 为此目的使用preg_quote()
。
<强>可视化:强>