根据PHP中的关键字将字符串拆分为数组

时间:2014-01-28 09:11:52

标签: php arrays string

我所拥有的是一个从上传文件中提取的长字符串,我试图根据关键字拆分此字符串,我知道这里有许多关于拆分和爆炸字符串的答案,但没有一个给我一个线索关于如何解决我的问题,因为我不依赖于空格或特定数量的字符,我唯一的因素是某些关键字的出现,这是我试过的:

    $text = readMyFile('filename.txt');
    //Now $text contains a very long unformatted text but there are keywords
    $keyword = 'ADDRESS:'; //there is only one occurrence of ADDRESS:
    $address = explode($keyword, $text);

    print_r($address); //$address[1] contains all text after the keyword ADDRESS:

但我还有其他要搜索的关键字,现在我有一个包含两个元素的数组,关键字前后的所有文本,如何反复重复此过程以提取关键字之间的所有文本, 'ADDRESS:'和'JOB TITLE'之间的示例,以便我从原始文档中获取数组的一个元素中的完整地址

1 个答案:

答案 0 :(得分:1)

您可以使用preg_match_all()

$keywords = ['ADDRESS', 'JOB TITLE'];
$pattern = sprintf('/(?:%s):(.*?)/', join('|', array_map(function($keyword) {
    return preg_quote($keyword, '/');
}, $keywords)));

preg_match_all($pattern, $text, $matches);

跳过第一个关键字之前的文字。