需要帮助使用explode,preg_match

时间:2014-11-04 16:55:44

标签: php regex explode preg-split

我在一个字符串中有超过一千条评论。我被问到是否可以从每个作者那里得到平均费率。字符串的示例如下。我已经强调了我需要提取到数组中的内容。

  

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_splitexplode

2 个答案:

答案 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*/