如何使用php拆分字符串中的负值和正值?
我在php中有一个字符串变量,看起来像“如何使用php拆分字符串中的负值和正值?,php,regex,Php,Regex,我在php中有一个字符串变量,看起来像“0+1.65+0.002-23.9”,我想在它们各自的值中拆分 例: 我尽量做到: $keys = preg_split("/^[+-]?\\d+(\\.\\d+)?$/", $data); 但不是我期望的工作 有人能帮我吗?事先非常感谢。像这样: $yourstring = "0+1.65+0.002-23.9"; $regex = '~\+|(?=-)~'; $splits = preg_split($regex, $yourstring); pri
0+1.65+0.002-23.9
”,我想在它们各自的值中拆分
例:
我尽量做到:
$keys = preg_split("/^[+-]?\\d+(\\.\\d+)?$/", $data);
但不是我期望的工作
有人能帮我吗?事先非常感谢。像这样:
$yourstring = "0+1.65+0.002-23.9";
$regex = '~\+|(?=-)~';
$splits = preg_split($regex, $yourstring);
print_r($splits);
输出(见):
解释
- 我们的正则表达式是
。我们将在任何匹配的问题上分歧+|(?=-)
- 它与
或+
匹配|
- 前瞻
匹配下一个字符为(?=-)
的位置,允许我们保留-
-
- 然后我们分手了李>
+
字符,则选择2
(?=[+-])
这个正则表达式是一个断言下一个位置是加号或减号的前瞻。就我的审美观而言,这是一个很好的解决方案
输出(见:
参考
- 你可以试试这个
$data = ' 0 1.65 0.002 -23.9';
$t = str_replace( array(' ', ' -'), array(',',',-'), trim($data) );
$ta = explode(',', $t);
print_r($ta);
这将为您提供一个包含每个字段的数组,如下所示:
Array
(
[0] => 0
[1] => 1.65
[2] => 0.002
[3] => -23.9
)
回复:您的评论:原始值在字符串变量中,仅以正负符号分隔 这给出了一个类似的答案,但有正确的输入和输出
Array
(
[0] => 0
[1] => +1.65
[2] => +0.002
[3] => -23.9
)
仅供参考:添加了实时php演示:)哇,太快了!!非常感谢。接受是有时间限制的。几分钟后我会做XD。重复,非常感谢。谢谢,戈帕!下次见。:)单个字段是否用空格或换行符分隔????我认为@AvinashRaj把这个问题和他的编辑混淆了!!!原始值在一个字符串变量中,只对正负符号进行分隔。这样,您就不需要加载正则表达式引擎,只需相当简单的一点文本操作,开销相当大。
$data = ' 0 1.65 0.002 -23.9';
$t = str_replace( array(' ', ' -'), array(',',',-'), trim($data) );
$ta = explode(',', $t);
print_r($ta);
Array
(
[0] => 0
[1] => 1.65
[2] => 0.002
[3] => -23.9
)
$data = ' 0+1.65+0.002-23.9 ';
$t = str_replace( array('-', '+'), array(',-',',+'), trim($data) );
$ta = explode(',', $t);
print_r($ta);
Array
(
[0] => 0
[1] => +1.65
[2] => +0.002
[3] => -23.9
)