有一个字符串,最多由三部分组成:Writer
、Director
和Producer
。我们称它们为“类别”。每个类别由两个部分组成,用冒号分隔:Label : Names
,其中Label
是上述类别名称之一,Names
是由斜杠分隔的名称列表。例如:
Writer : Jeffrey Schenck / Peter Sullivan / Director : Brian Trenchard-Smith / jack / Producer : smith
我想使用preg_match
函数将字符串按照类别名称和名称列表分成几个部分。 这里是我目前的代码:
$pattern = '/Writer : (?P<Writer>[\s\S]+?)Director : (?P<Director>[\s\S]+?)Producer : (?P<Producer>[\s\S]+)/';
$sentence = 'Writer : Jeffrey Schenck / Peter Sullivan / Director : Brian Trenchard-Smith / jack / Producer : smith';
preg_match($pattern, $sentence, $matches);
foreach($matches as $cat => $match) {
// Do more
// echo "<b>" . $cat . "</b>" . $match . "<br />";
}
如果字符串中恰好包含三个类别,则该脚本能正常工作。如果至少缺少一个类别,则该脚本将失败。
$matches
是空的,你的 foreach 就不会执行任何操作。 - Marc B