0

我有一个保存为.txt. 前任:

John Doe Designer\n 
Another Name AnotherJob.

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

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

2 回答 2

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'));

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

于 2013-08-13T02:28:32.333 回答
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);
于 2013-07-01T16:54:11.227 回答