查找并替换数组中的文本

时间:2016-02-11 11:10:06

标签: php replace find

使用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'
);

怎么能得到这个?

4 个答案:

答案 0 :(得分:2)

您可以在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

答案 1 :(得分:1)

$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);

答案 2 :(得分:0)

您应该使用这样的正则表达式替换:

preg_replace("#([0-9\-]+)/([0-9\-]+)/([0-9\-]+).([a-z]+)#", "$1$2$3.$4", $url);

答案 3 :(得分:-1)

只需像这样使用pathinfo ..

$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);