我正在寻找一种从此字符串中获取以下数据的方法
DON'T FLOP - Rap Battle - Illmaculate Vs Tony D
DON'T FLOP - Rap Battle - $var1 Vs $var2
所以我最终可以使用$var3 = $var1 Vs $var2
问题在于对手的名字可以包含多个单词,而我可以直到句子的结尾为vs的右边的对手,我没有办法划定对手的开头对手的名字,我呢?
如何在 - 之后从空白区域进行检查,在vs处停止并再次启动$ var2直到句子结束?
答案 0 :(得分:1)
(.+?)
左侧的非贪婪捕获群Vs
,在-
和空格后应抓取名字。只要你在-
之后总是有空格,这应该可以正常工作。如有必要,\s+
允许多个空格。
$pattern = '/Rap Battle -\s+(.+?)\s+Vs\s+(.+)$/';
$string = "DON'T FLOP - Rap Battle - Illmaculate Vs Tony D";
preg_match($pattern, $string, $matches);
var_dump($matches);
array(3) {
[0]=>
string(34) "Rap Battle - Illmaculate Vs Tony D"
[1]=>
string(11) "Illmaculate"
[2]=>
string(6) "Tony D"
}
$var1 = $matches[1];
$var2 = $matches[2];
答案 1 :(得分:0)
$text = "DON'T FLOP - Rap Battle - Illmaculate Vs Tony D";
$regex = '%Rap Battle - (.*?) Vs (.*)$%';
preg_match($regex, $text, $array);
$array[0] = entire string match.
$array[1] = first opponent.
$array[2] = 2nd opponent.