我确实有一个相当奇怪的事情发生在我身上,我似乎不能找出我的问题在哪里,我有一个csv文件,我用来导出数据。它充满了URL和其他东西。我已经提取了URL在这个数组$urlsOfCsv
我将csv行提取到一个数组中,方法如下:
$request->file('file')->move(public_path('uploads/temp/'),'tempcsv.csv');
$file = fopen(public_path('uploads/temp/').'tempcsv.csv',"r");
$lines = [];
fgetcsv($file, 10000, ",");
$o=0;
while (($data = fgetcsv($file, 0, "\t")) !== FALSE) {
$lines[$o]= $data;
$o++;
}
fclose($file);
File::delete($file);
$urlsOfCsv = array_column($lines,0);
但是我不能用parse_url()提取域,因为我得到了这个奇怪的东西:
foreach($urlsOfCsv as $url){
var_dump($url);
var_dump(parse_url($url));
}
会给予这样的结果:
string(41) "https://www.h4d.com/" array(1) { ["path"]=> string(41) "_h_t_t_p_s_:_/_/_w_w_w_._h_4_d_._c_o_m_/_" }
string(73) "https://www.campussuddesmetiers.com/" array(1) { ["path"]=> string(73) "_h_t_t_p_s_:_/_/_w_w_w_._c_a_m_p_u_s_s_u_d_d_e_s_m_e_t_i_e_r_s_._c_o_m_/_" }
string(69) "http://altitoy-ternua.com/?lang=es" array(2) { ["path"]=> string(53) "_h_t_t_p_:_/_/_a_l_t_i_t_o_y_-_t_e_r_n_u_a_._c_o_m_/_" ["query"]=> string(15) "_l_a_n_g_=_e_s_" }
string(81) "https://www.opquast.com/communaute/jobs/" array(1) { ["path"]=> string(81) "_h_t_t_p_s_:_/_/_w_w_w_._o_p_q_u_a_s_t_._c_o_m_/_c_o_m_m_u_n_a_u_t_e_/_j_o_b_s_/_" }
我甚至没有数组中的“host”键。
你知道为什么我会得到这个结果吗?
我用regex试了很多方法来使用其他函数。但是我得到的不是空结果就是什么。
我想这和csv的东西有关,但我找不到在哪里。
1条答案
按热度按时间qyswt5oh1#
多亏了Cbroe,我找到了一个非常明显的解决方案。我的csv文件中有错误的编码。经过一点研究,我发现我的文件是用UTF-16编码的。我试着用这种方式转换编码(考虑到双循环,这可能不是最佳的):
而且现在它工作得很好。
parse_url()
会给予我期待的结果(UrlParser::getDomain()
对我也有效)。