我在一个字符串中有超过一千条评论。我被问到是否可以从每个作者那里得到平均费率。字符串的示例如下。我已经强调了我需要提取到数组中的内容。
Shepherd's Bush Empire(时代p54 - 4 * David Sinclair )Grizzly Bear - Serpentine Sessions,海德公园,伦敦(独立论坛第17页 - 4 * Elisa Bray )Blondie - Kenwood House(太阳p69 - 4 * JJ )Jeff Tweedy - Union Chapel,伦敦(独立论坛第17页 - 4 * Enjoli Liston )Tony Bennett - 伦敦Albert Hall(时间p68 - 4 * Clive Davis ,标准p40 - 5 * Jack Massarick
无论如何要在*
上爆炸字符串,请返回一个字符并转发给单词。
我知道会有赔率,但这些可以在以后删除。有没有办法使用preg_split
或explode
?
答案 0 :(得分:0)
您可以使用正则表达式:
([0-9]+) *\* *([^\)]+)
应该做的伎俩。
这会查找1个或多个数字(保存它们),然后是零个或多个丢弃的空格,文字*
,后跟任意数量的丢弃空格,后跟任意数量的任何字符,但文字{ {1}},保存它们。
答案 1 :(得分:0)
找到一个数字,后跟一个星号,然后是两个用空格分隔的单词
preg_match_all("/\d\* ?\w* ?\w*/", $input_lines, $output_array);
这是一个示例链接http://www.phpliveregex.com/p/7Ty
您的输出数组将如下所示
Array
(
[0] => Array
(
[0] => 4* David Sinclair
[1] => 4* Elisa Bray
[2] => 4* JJ
[3] => 4* Enjoli Liston
[4] => 4* Clive Davis
[5] => 5* Jack Massarick
)
)
EDIT ::
要添加可选的小数位,请使用此/\d(\.\d{1,2})?\* ?\w* ?\w*/