将部分字符串提取到另一个变量

时间:2013-07-01 16:48:38

标签: php

我有一个名称和作业列表保存为.txt。 例如:

John Doe Designer\n 
Another Name AnotherJob.

我必须将名称和工作分开。我使用explode("\n")来分隔线条。 事情就是这样:我将所有作业名称都放在一个数组中,如何将字符串中的名称提取到另一个变量?所以输出将是:

$name = "John Doe";
$job = "Designer";

2 个答案:

答案 0 :(得分:0)

这不是完美的,因为评论说明但是对于你的文本,这将有效。 如果你有一个1/3或更多部分的名称它会搞砸但是对于你的例子,这将有所作为

$text = "John Doe Designer\n Another Name AnotherJob";
$parts = explode("\n", $text);

$persons = array();

foreach($parts as $key => $part){
    $personData = explode(" ", $part);
    $job = str_replace($personData[0]." ".$personData[1], "", $part);
    $persons[] = array(
      "fname" => $personData[0],
      "lname" => $personData[1],
      "job" => $job
    );
}

print_r($persons);

答案 1 :(得分:0)

如果您拥有数组中的所有作业名称,则可以执行以下操作:

function getName($line, array $jobs)
{
    foreach ($jobs as $job) {
        if (substr_compare($line, $job, -strlen($job)) == 0) {
            return rtrim(substr($line, 0, -strlen($job)));
        }
    }
    return false;
}

$line = 'John Doe Designer';
$name = getName($line, array('Designer'));

根据文本文件中的给定行,该函数将测试它是否以特定作业结束;如果是的话,名称就是它前面的部分。