在我正在处理的数据库中有一个像这样的字符串
1-Test Response|9-DNC|
这最多可包含9个以管道分隔的项目。
我正在寻找建议的是获取此字符串并将其转换为数组的最佳方法,其中数字为键,字符串为值。
我真的很喜欢Regex。有人能指出我正确的方向吗?
由于这不是你的错,你有这样的DB结构,请接受我诚挚的哀悼。一定是地狱一起工作。咩。
现在,到了这一点。您不需要正则表达式来使用此字符串。如果您遇到问题而想要使用正则表达式解决问题,则有两个问题。
相反,使用explode()
。
$testString = "1-Test Response|9-DNC|";
$result = [];
$explodedByPipeString = explode("|", $testString);
foreach($explodedByPipeString as $k => $v)
{
$explodedByDashString = explode("-", $v);
if(is_numeric($explodedByDashString[0]))
{
$result[$explodedByDashString[0]] = $explodedByDashString[1];
}
}
var_dump($result);
这给了
array(2) {
[1]=>
string(13) "Test Response"
[9]=>
string(3) "DNC"
}
以下是我为其他任何想知道的事情
$SurveyOptions = preg_match_all('/(\d+)-([^|]+)/',
$res['survey_response_digit_map'], $matches);
$finalArray = array_combine($matches[1], $matches[2]);
挺直的。