我想在几个单独的长文本字符串中保留一个值,其中一个部分是共同的。其中一个文本字符串:
N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen
共同部分是" Kr 204.500,"我只需要这些数字,所以我可以在以后用它们进行计算。
答案 0 :(得分:1)
尝试类似的东西:
$results = array();
preg_match(
"/Kr (\d*.?\d*)/",
"N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen",
$results
);
// output: array(
// 0 => Kr 204.500
// 1 => 204.500
// )
然后,如果你想将数字分成数组,你需要这样做:
if (isset($results[1])) {
$numbers = preg_split("/\./", $results[1]);
// output = array(
// 0 => 204
// 1 => 500
// )
}
在您的反馈后进行修改
$results = array();
preg_match(
"/Kr (\d*.?\d*)/",
"N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen",
$results
);
$number = isset($results[1]) ? preg_replace("/\./", "", $results[1]) : null;
// output: 204500
答案 1 :(得分:0)
要获取Kr
之后的数字/点数,您可以使用以下表达式:
Kr\h* # Kr as string, followed by spaces or tabs
([.\d]+) # capture numbers like 123, 12.5 into the first group
<小时/>
在PHP
:
<?php
$string = 'N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen';
$regex = '~
Kr\h* # Kr as string, followed by spaces or tabs
([.\d]+) # capture numbers like 123, 12.5 into the first group
~x';
preg_match_all($regex, $string, $matches);
print_r($matches);
?>
答案 2 :(得分:-1)
想想我自己也许已经解决了..
$var = strstr($var, 'Kr. ');
$var = substr($var, 0, strpos($var, ", "));
$var = str_replace("Kr. ","",$var);
$var = str_replace(".","",$var);
感谢您的帮助!有任何改进建议吗?