我需要将此字符串拆分为不同的部分以收集特定数据,以便我可以使用PHP将其存储在数据库中。 我正在帮助分割或使用正则表达式来可靠地收集这些数据。 并非所有的值都是相同的长度,因此需要一种方法来测试每个部分而不仅仅根据字符位置进行拆分。
Sol 1565 (Dec 31, 2016): Sunny, high -6C/21F, low -72C/-97F, pressure at 8.74 hPa, daylight 06:25-18:41
我想获得这些单独的值:
编辑:
我尝试过使用substr
,但很快就发现它不可靠。因此,在一个更合适的解决方案之后。
答案 0 :(得分:1)
首先,您必须了解正则表达式语法,然后才能轻松完成。以下是参考:http://php.net/manual/en/regexp.introduction.php
我做了一个让你明白的。希望你能做到最后。
<?php
$pattern = '@(high\s)([-+/0-9a-zA-Z]+)@';
$subject = 'Sol 1565 (Dec 31, 2016): Sunny, high -6C/21F, low -72C/-97F, pressure at 8.74 hPa, daylight 06:25-18:41';
$result = preg_match( $pattern, $subject , $matches );
print_r($matches);
结果:
Array
(
[0] => high -6C/21F
[1] => high
[2] => -6C/21F
)
您将获得高价值$matches[2]
。然后你可以使用explode()
获得C和F.
我正在展示一个部分解决方案。您可以在阅读正则表达式语法后应用替代模式。