我有一个带有描述的长字符串。我想从字符串中提取一些信息。但我无法弄明白该怎么做。
这是字符串:
Continental CONTIPREMIUMCONTACT 2 auto / zomerband - 195/55 R15 V85。 Eigenschappen EU bandenlabel:brandstofefficiÃ:ntie:F,grip op nat wegdek:C,geluid:71dB,klasse:C1,geluidsklasse:2 - bij www.tirendo.nl。 Nu geen verzendkosten! Directe瞄准bij u thuis bij een montagepunt naar keuze binnen 1-4 dagen。
我想检索以下结果:
brandstofefficientie = F,grip op natwegdek = C,geluid = 71dB。
我试图使用爆炸提取它,但实际上并没有按照应有的方式工作。
有人可以看一下并帮助我吗?
答案 0 :(得分:1)
我建议您创建一个以您的信息字符串为键的数组,然后执行regexp以获得结果。像这样:
$string = "Continental CONTIPREMIUMCONTACT 2 auto/zomerband - 195/55 R15 V85. Eigenschappen EU bandenlabel: brandstofefficientie: F, grip op nat wegdek: C, geluid: 71dB, klasse: C1, geluidsklasse: 2 - bij www.tirendo.nl. Nu geen verzendkosten! Directe levering bij u thuis of bij een montagepunt naar keuze binnen 1-4 dagen.";
$myInfo = array(
"brandstofefficientie",
"grip op nat wegdek",
"geluid"
);
$pattern = "/(" . implode("|", $myInfo) . ")\:\s+(.*?),/";
preg_match_all($pattern, $string, $match);
var_dump($match);
您可以对允许的标记使用一些变体,只是为了根据您的需要以不同的方式排序结果,例如:
preg_match_all($pattern, $string, $match, PREG_SET_ORDER); //see PREG_SET_ORDER
来源: http://it2.php.net/manual/en/function.preg-match-all.php
另一种选择可能是使用named capturing group,因为:
$pattern = "/(?<info>" . implode("|", $myInfo) . ")\:\s+(?<value>.*?),/";
preg_match_all($pattern, $string, $match, PREG_SET_ORDER);
foreach($match AS $result)
{
echo "{$result['info']} : {$result['value']}<br>";
}
答案 1 :(得分:0)
如果字符串的格式完全相同,则可以执行以下操作:
preg_match('#(.*)brandstofefficientie: (.), grip op nat wegdek: (.), geluid: (.+)dB(.*)#ui', $inputString, $matches); echo 'brandstofefficientie: '.$matches[2].'; grip op nat wegdek: '.$matches[3].'; geluid: '.$matches[4].'dB';
我的第一个(也未接受)答案是
$result = preg_replace('#(.*)brandstofefficientie: (.), grip op nat wegdek: (.), geluid: (.+)dB(.*)#ui', 'brandstofefficientie = $2, grip op natwegdek = $3, geluid = $4dB.', $inputString); echo $result;
将按字面意思返回结果。
答案 2 :(得分:0)
$text='Continental CONTIPREMIUMCONTACT 2 auto/zomerband - 195/55 R15 V85. Eigenschappen EU bandenlabel: brandstofefficiëntie: F, grip op nat wegdek: C, geluid: 71dB, klasse: C1, geluidsklasse: 2 - bij www.tirendo.nl. Nu geen verzendkosten! Directe levering bij u thuis of bij een montagepunt naar keuze binnen 1-4 dagen.=';
$explode=explode(':',$text);
$explode_last=explode(',',$explode[4]);
echo $string=$explode[1]."=".$explode[2]."=".$explode[3]."=".$explode_last[0];
答案 3 :(得分:0)
您可以使用以下regex preg_match方法来检索所需的字符串值。
$text = 'Continental CONTIPREMIUMCONTACT 2 auto/zomerband - 195/55 R15 V85. Eigenschappen EU bandenlabel: brandstofefficiëntie: F, grip op nat wegdek: C, geluid: 71dB, klasse: C1, geluidsklasse: 2 - bij www.tirendo.nl. Nu geen verzendkosten! Directe levering bij u thuis of bij een montagepunt naar keuze binnen 1-4 dagen.';
preg_match('/^.*?brandstofefficiëntie: (.*?),.*?grip op nat wegdek: (.*?),*.?geluid: (.*?),/',$text,$result);
现在,您可以分别在$result[1]
,$result[2]
和$result[3]
找到brandstofefficiÃñtie,grip op nat wegdek和geluid的值。