查找和替换数组中的文本
Find and replace text in array
使用 PHP 我需要遍历一个数组以从中删除每个值的最后 两个斜杠 :
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
对此:
$my_new_array = array(
'http://apinmo.com/123.jpg',
'http://apinmo.com/458.jpg',
'http://apinmo.com/1093.jpg',
'http://apinmo.com/765345356-1.jpg'
);
如何得到这个?
像这样简单地使用路径信息..
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
$tmp=array();
foreach( $my_array as $url ){
$tmp[]= pathinfo( $url, PATHINFO_DIRNAME ).pathinfo( $url, PATHINFO_BASENAME );
}
print_r($tmp);
您可以通过删除数字之间的 /
来尝试使用 regex
。
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
$new = array_map(function($v) {
return preg_replace('/(?<=\d)\/(?=\d)/', '', $v);
}, $my_array);
输出
array(4) {
[0]=>
string(25) "http://apinmo.com/123.jpg"
[1]=>
string(25) "http://apinmo.com/458.jpg"
[2]=>
string(26) "http://apinmo.com/1093.jpg"
[3]=>
string(33) "http://apinmo.com/765345356-1.jpg"
}
而且变量名中不能有 -
。
更新
$new = array_map(function($v) {
$temp = preg_replace('/(?<=\d)\/(?=\d)/', '', $v);
return str_replace('http://', '', $temp);
}, $my_array);
echo implode(', ', $new);
输出
apinmo.com/123.jpg, apinmo.com/458.jpg, apinmo.com/1093.jpg, apinmo.com/765345356-1.jpg
$mya = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
foreach($mya as $my)
{
$myb[] = preg_replace("~\/(?!.*\/)~","",preg_replace("~\/(?!.*\/)~", "",$my));
}
print_r($myb);
您应该像这样使用正则表达式替换:
preg_replace("#([0-9\-]+)/([0-9\-]+)/([0-9\-]+).([a-z]+)#", ".", $url);
使用 PHP 我需要遍历一个数组以从中删除每个值的最后 两个斜杠 :
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
对此:
$my_new_array = array(
'http://apinmo.com/123.jpg',
'http://apinmo.com/458.jpg',
'http://apinmo.com/1093.jpg',
'http://apinmo.com/765345356-1.jpg'
);
如何得到这个?
像这样简单地使用路径信息..
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
$tmp=array();
foreach( $my_array as $url ){
$tmp[]= pathinfo( $url, PATHINFO_DIRNAME ).pathinfo( $url, PATHINFO_BASENAME );
}
print_r($tmp);
您可以通过删除数字之间的 /
来尝试使用 regex
。
$my_array = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
$new = array_map(function($v) {
return preg_replace('/(?<=\d)\/(?=\d)/', '', $v);
}, $my_array);
输出
array(4) {
[0]=>
string(25) "http://apinmo.com/123.jpg"
[1]=>
string(25) "http://apinmo.com/458.jpg"
[2]=>
string(26) "http://apinmo.com/1093.jpg"
[3]=>
string(33) "http://apinmo.com/765345356-1.jpg"
}
而且变量名中不能有 -
。
更新
$new = array_map(function($v) {
$temp = preg_replace('/(?<=\d)\/(?=\d)/', '', $v);
return str_replace('http://', '', $temp);
}, $my_array);
echo implode(', ', $new);
输出
apinmo.com/123.jpg, apinmo.com/458.jpg, apinmo.com/1093.jpg, apinmo.com/765345356-1.jpg
$mya = array(
'http://apinmo.com/1/2/3.jpg',
'http://apinmo.com/4/5/8.jpg',
'http://apinmo.com/10/9/3.jpg',
'http://apinmo.com/76/534535/6-1.jpg'
);
foreach($mya as $my)
{
$myb[] = preg_replace("~\/(?!.*\/)~","",preg_replace("~\/(?!.*\/)~", "",$my));
}
print_r($myb);
您应该像这样使用正则表达式替换:
preg_replace("#([0-9\-]+)/([0-9\-]+)/([0-9\-]+).([a-z]+)#", ".", $url);