PHP 删除数组元素中 url 的一部分
PHP remove part of a url in an array element
我有一个 .csv
文件,我已将其转换为数组 $outputData
。每个数组的第 6 个 $data[6]
元素包含一个图像文件路径,例如
http://images.pleaserusa.com/pic/unique.image.jpg
我需要删除每个图像的文件路径 http://images.pleaserusa.com/pic/
,只保留图像名称本身,例如
unique.image.jpg
我看过这里和 Google 并尝试使用 preg_match()
和 str*
函数,但我并没有真正使用它。
Rizer123 我已经放置了 "basename" 函数,但无法将其替换到元素内部。我只能把它放到数组外的echo/print/我已经把代码放在下面,下面是一个摘录数组。
domina-456-b.jpgArray
(
[0] => DOM456/B
[1] => 6" Lace-Up Pump W/ D-Ring&Ribbon Lace
[2] => Devious
[3] => Single Soles
[4] => DOMINA-456
[5] => Blk Pat
[6] => http://images.pleaserusa.com/pic/domina-456-b.jpg
[7] => 5-15
)
domina-460-b.jpgArray
(
[0] => DOM460/B
[1] => 6" Oxford Lace Up Pump
[2] => Devious
[3] => Single Soles
[4] => DOMINA-460
[5] => Blk Pat
[6] => http://images.pleaserusa.com/pic/domina-460-b.jpg
[7] => 5-16
)
<?php
$input = 'Parser/Inv_item.csv';
$output = 'hd_inv_items.csv';
if (false !== ($ih = fopen($input, 'r'))) {
$oh = fopen($output, 'w');
header('Content-Type: text/plain');
while (false !== ($data = fgetcsv($ih))) {
// this is where you build your new row
$outputData = array($data[0], $data[1], $data[2], $data[3], $data[5],$data[6], $data[9], $data[8]);
$path = $data[9];
$name = basename($path); // $name == '1.jpg'
print_r($name);
print_r($outputData);
//fputcsv($oh, $outputData);
}
fclose($ih);
fclose($oh);
}
?>
如您所见,图像文件路径仍在数组中,而 basename 结果打印在数组外。我该如何解决这个问题
问候 Biwwabong
我总是这样 explode()
$url = "http://images.pleaserusa.com/pic/unique.image.jpg";
$parts = explode("/",$url);
$pic = $parts[count($parts)-1];
不客气;-)
不需要爆炸或字符串操作,一个简单的 basename()
就足够了:
$path = 'http://images.pleaserusa.com/pic/unique.image.jpg';
echo basename($path);
输出:
unique.image.jpg
pathinfo()
也可以:
echo pathinfo($path, PATHINFO_BASENAME);
我有一个 .csv
文件,我已将其转换为数组 $outputData
。每个数组的第 6 个 $data[6]
元素包含一个图像文件路径,例如
http://images.pleaserusa.com/pic/unique.image.jpg
我需要删除每个图像的文件路径 http://images.pleaserusa.com/pic/
,只保留图像名称本身,例如
unique.image.jpg
我看过这里和 Google 并尝试使用 preg_match()
和 str*
函数,但我并没有真正使用它。
Rizer123 我已经放置了 "basename" 函数,但无法将其替换到元素内部。我只能把它放到数组外的echo/print/我已经把代码放在下面,下面是一个摘录数组。
domina-456-b.jpgArray
(
[0] => DOM456/B
[1] => 6" Lace-Up Pump W/ D-Ring&Ribbon Lace
[2] => Devious
[3] => Single Soles
[4] => DOMINA-456
[5] => Blk Pat
[6] => http://images.pleaserusa.com/pic/domina-456-b.jpg
[7] => 5-15
)
domina-460-b.jpgArray
(
[0] => DOM460/B
[1] => 6" Oxford Lace Up Pump
[2] => Devious
[3] => Single Soles
[4] => DOMINA-460
[5] => Blk Pat
[6] => http://images.pleaserusa.com/pic/domina-460-b.jpg
[7] => 5-16
)
<?php
$input = 'Parser/Inv_item.csv';
$output = 'hd_inv_items.csv';
if (false !== ($ih = fopen($input, 'r'))) {
$oh = fopen($output, 'w');
header('Content-Type: text/plain');
while (false !== ($data = fgetcsv($ih))) {
// this is where you build your new row
$outputData = array($data[0], $data[1], $data[2], $data[3], $data[5],$data[6], $data[9], $data[8]);
$path = $data[9];
$name = basename($path); // $name == '1.jpg'
print_r($name);
print_r($outputData);
//fputcsv($oh, $outputData);
}
fclose($ih);
fclose($oh);
}
?>
如您所见,图像文件路径仍在数组中,而 basename 结果打印在数组外。我该如何解决这个问题
问候 Biwwabong
我总是这样 explode()
$url = "http://images.pleaserusa.com/pic/unique.image.jpg";
$parts = explode("/",$url);
$pic = $parts[count($parts)-1];
不客气;-)
不需要爆炸或字符串操作,一个简单的 basename()
就足够了:
$path = 'http://images.pleaserusa.com/pic/unique.image.jpg';
echo basename($path);
输出:
unique.image.jpg
pathinfo()
也可以:
echo pathinfo($path, PATHINFO_BASENAME);