我在数组$a2
中有空格问题。我想将" "
替换为""
。
我试过
$a2 = str_replace(" ", "", $a2);
甚至:
function str_replace_json($search, $replace, $subject) {
return json_decode(str_replace($search, $replace, json_encode($subject)), true);
}
$a2 = str_replace_json(" ", "", $a2);
但是它只在数字之前和之后(不在内部)修剪空格。
我的阵列:
$a2 = array( $rowData[3][1],
$rowData[3][2],
$rowData[3][3],
$rowData[3][4],
$rowData[3][5],
$rowData[3][6],
$rowData[3][7]
);
我的数组的var_dump:
array(7) { [0]=> string(54) " 155 808.00 "
[1]=> string(54) " 131 256.00 "
[2]=> string(54) " 106 008.00 "
[3]=> string(53) " 60 600.00 "
[4]=> string(53) " 41 520.00 "
[5]=> string(52) " 5 880.00 "
[6]=> string(52) " 6 744.00 "
}
可能是什么原因?
修改 当我以这种方式取消我的阵列时:
$a2 = array(
" 155 808.00 ",
" 131 256.00 ",
" 106 008.00 ",
" 60 600.00 ",
" 41 520.00 ",
" 5 880.00 ",
" 6 744.00 "
);
我可以轻松修剪所有空格(包括数字内部的空格)。
这就是我创建$rowData
include_once ("includes/php/simple_html_dom.php");
$html = file_get_html('https://gaz.tge.pl/pl/rdn/gas/index/index/');
$table = $html->find("table[@class=t-02]",0);
$rowData = array();
foreach($table->find('tr') as $row) {
$data = array();
foreach($row->find('td') as $cell) {
$data[] = $cell->plaintext;
}
$rowData[] = $data;
}
array_unshift($rowData[0], "RDNpg");
var_dump
的 $rowData
:
array(7) { [0]=> array(8) { [0]=> string(5) "RDNpg" [1]=> string(68) " Pn. 13/02 " [2]=> string(68) " Wt. 14/02 " [3]=> string(69) " Śr. 15/02 " [4]=> string(68) " Cz. 16/02 " [5]=> string(68) " Pt. 17/02 " [6]=> string(68) " So. 18/02 " [7]=> string(67) " N. 19/02 " } [1]=> array(1) { [0]=> string(40) " TGEgasDA " } [2]=> array(8) { [0]=> string(8) "PLN/MWh " [1]=> string(44) " 92.56 " [2]=> string(44) " 91.36 " [3]=> string(44) " 89.51 " [4]=> string(44) " 87.62 " [5]=> string(44) " 88.01 " [6]=> string(44) " 84.63 " [7]=> string(44) " 84.90 " } [3]=> array(8) { [0]=> string(4) "MWh " [1]=> string(54) " 155 808.00 " [2]=> string(54) " 131 256.00 " [3]=> string(54) " 106 008.00 " [4]=> string(53) " 60 600.00 " [5]=> string(53) " 41 520.00 " [6]=> string(52) " 5 880.00 " [7]=> string(52) " 6 744.00 " } [4]=> array(1) { [0]=> string(40) " TGEsgtDA " } [5]=> array(8) { [0]=> string(8) "PLN/MWh " [1]=> string(40) " - " [2]=> string(40) " - " [3]=> string(40) " - " [4]=> string(40) " - " [5]=> string(40) " - " [6]=> string(40) " - " [7]=> string(40) " - " } [6]=> array(8) { [0]=> string(4) "MWh " [1]=> string(40) " - " [2]=> string(40) " - " [3]=> string(40) " - " [4]=> string(40) " - " [5]=> string(40) " - " [6]=> string(40) " - " [7]=> string(40) " - " } } array(7) { [0]=> string(54) " 155 808.00 " [1]=> string(54) " 131 256.00 " [2]=> string(54) " 106 008.00 " [3]=> string(53) " 60 600.00 " [4]=> string(53) " 41 520.00 " [5]=> string(52) " 5 880.00 " [6]=> string(52) " 6 744.00 " }
json_encode($rowData);
[["RDNpg"," \t Pn. \t 13\/02 \t "," \t Wt. \t 14\/02 \t "," \t \u015ar. \t 15\/02 \t "," \t Cz. \t 16\/02 \t "," \t Pt. \t 17\/02 \t "," \t So. \t 18\/02 \t "," \t N. \t 19\/02 \t "],[" \t TGEgasDA \t "],["PLN\/MWh "," \t 92.56 \t "," \t 91.36 \t "," \t 89.51 \t "," \t 87.62 \t "," \t 88.01 \t "," \t 84.63 \t "," \t 84.90 \t "],["MWh "," \t 155 808.00 \t "," \t 131 256.00 \t "," \t 106 008.00 \t "," \t 60 600.00 \t "," \t 41 520.00 \t "," \t 5 880.00 \t "," \t 6 744.00 \t "],[" \t TGEsgtDA \t "],["PLN\/MWh "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "],["MWh "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "," \t - \t "]]
编辑2 我使用bin2hex()
查看$a2
数组中的内容。我得到了:
20200920202020202020202020202020202020313535266e6273703b3830382e30302020200920202020202020202020202020202020
20200920202020202020202020202020202020313331266e6273703b3235362e30302020200920202020202020202020202020202020
20200920202020202020202020202020202020313036266e6273703b3030382e30302020200920202020202020202020202020202020
202009202020202020202020202020202020203630266e6273703b3630302e30302020200920202020202020202020202020202020
202009202020202020202020202020202020203431266e6273703b3532302e30302020200920202020202020202020202020202020
2020092020202020202020202020202020202035266e6273703b3838302e30302020200920202020202020202020202020202020
2020092020202020202020202020202020202036266e6273703b3734342e30302020200920202020202020202020202020202020
我是否正确,神秘的空间是不间断的空间
,这就是为什么具有正常空间的修剪功能不起作用的原因?
答案 0 :(得分:2)
试试这个:
<?php
$rowData = array(
array(
"RDNpg",
" Pn. 13/02 ",
" Wt. 14/02 ",
" Śr. 15/02 ",
" Cz. 16/02 ",
" Pt. 17/02 ",
" So. 18/02 ",
" N. 19/02 ",
),
array(" TGEgasDA "),
array(
"PLN/MWh ",
" 92.56 ",
" 91.36 ",
" 89.51 ",
" 87.62 ",
" 88.01 ",
" 84.63 ",
" 84.90 "),
array(
"MWh ",
" 155 808.00 ",
" 131 256.00 ",
" 106 008.00 ",
" 60 600.00 ",
" 41 520.00 ",
" 5 880.00 ",
" 6 744.00 "
),
array(
" TGEsgtDA ",
),
array(
"PLN/MWh ",
" - ",
" - ",
" - ",
" - ",
" - ",
" - ",
" - "
),
array(
"MWh ",
" - ",
" - ",
" - ",
" - ",
" - ",
" - ",
" - "
)
);
$a2 = array($rowData[3][1], $rowData[3][2], $rowData[3][3], $rowData[3][4], $rowData[3][5], $rowData[3][6], $rowData[3][7]);
function trimmed($item)
{
return str_replace(" ", "", $item);
}
$a2trim = array_map('trimmed', $a2);
var_dump($a2trim);
这是输出:
array(7) {
[0]=>
string(9) "155808.00"
[1]=>
string(9) "131256.00"
[2]=>
string(9) "106008.00"
[3]=>
string(8) "60600.00"
[4]=>
string(8) "41520.00"
[5]=>
string(7) "5880.00"
[6]=>
string(7) "6744.00"
}
这会将 trimmed 函数应用于数组中的元素。
答案 1 :(得分:1)
使用array_map
。代码如下所示:
$originalArray = json_decode($jsonText, true);
$data = array_map(function($value){
return str_replace(" ", '', $value);
}, $originalArray);
var_dump($data);
稍后编辑: 看起来问题的要求发生了变化,输入数据也一样。 这也改变了一切。 你可以在这里看到http://php.net/array_map它是如何工作的,它更简单,更清洁。
所以,让数组包含这些数据(让我们只取第一个键值)
// this is the actual data from the array
$a = "20200920202020202020202020202020202020313535266e6273703b3830382e30302020200920202020202020202020202020202020";
// make it readable
$b = hex2bin($a);
// see what is inside
var_dump($b);
var_dump将返回如下内容:
string(54) " 155 808.00 "
所以,你有
,这是6个字符,只显示一个。
在这种情况下我看到的解决方案是使用trim
函数从字符串的开头和结尾删除空格,然后使用preg_replace
删除所有非数字字符和点。
$b = trim($b);
$b = preg_replace("/([^0-9\.]+)/", '', $b);
结果将是:
string(9) "155808.00"
因此,最终结果将如下所示:
$data = array_map(function($value){
$value = trim($value);
return preg_replace("/([^0-9\.]+)/", '', $value);
}, $originalArray);
答案 2 :(得分:0)
你需要迭代
foreach($a2 as $index => $a2str){
$a2[$index] = str_replace(" ", "", $a2str);
}
答案 3 :(得分:-1)
在删除空格时我个人使用Preg_replace而不是str_replace
试试这个:
preg_replace('/(\s)/gm', '', $a2);