【问题标题】:Replace text inside an array in PHP在 PHP 中替换数组中的文本
【发布时间】:2015-07-24 05:11:47
【问题描述】:

我在 PHP $aResults 中有一个数组,包含数千个如下所示的 URL:

Array ( [0] => http://test.com/server1/Image?img=nortel.jpg ) 
Array ( [1] => http://test.com/server1/Image?img=network.jpg ) 

我需要替换每个 url 中的文本,并将服务器从 server1 替换为 server5,并将单词 image 替换为 photo,因此每个 url 应该如下所示:

http://test.com/server5/photo?img=

我如何做到这一点?

我尝试了 str_replace 函数的变体,但无法完成这项工作:

$sImgURL = $aResults[1][0]; 
    $filter_url ='server1/Image';   
    $replace='server5/photo';
    $filtered_url = str_replace($filter_url, $replace, $aResults);
    print_r($aResults);

实现这一目标的最佳方法是什么?谢谢

【问题讨论】:

  • 使用foreach有什么问题?
  • 也许可以代替:print_r($aResults); 做:print_r($filtered_url); ?!
  • @Rizier123 http://test.com/server5/photo?img=nortel.jpg 不是 OP 要求的。
  • $arr = str_replace("/server1/Image", "/server5/Photo", $arr);不好?
  • @Jessica 如果 OP 只想要一个完整的数组,那将毫无意义:http://test.com/server5/photo?img= 然后他可以这样做:array_fill(0, count($currentArray), "http://test.com/server5/photo?img="); ...

标签: php str-replace


【解决方案1】:
for ($i = 0; $i <= sizeof($aResults); $i++) {
    $aResults[$i] = str_replace('server1/Image', 'server5/photo', $aResults[$i]);
}

【讨论】:

  • str_replace() 也可以带数组,所以不需要循环! (而且这个循环甚至不能正确运行)
  • 当然,很好看,我忘了它可以接受数组,那将是一个更清洁的解决方案。顺便说一句,为什么循环不会运行?
  • 只要$i++ 为真,您的循环就会运行!直到整数溢出,只要你没有打到你打电话sizeof()只是为了好玩。
  • Aw 语义,好吧,我弄错了两个参数,哈哈,太晚了,我会交换它们:)
  • 告诉别人他们的代码不正确只有在你也说出原因的情况下才有用
【解决方案2】:

您可以使用 array_map 和 str_replace 函数:

<?php
    $data = array(
                0 => 'http://test.com/server1/Image?img=nortel.jpg' ,
                1 => 'http://test.com/server1/Image?img=network.jpg',
                2 => 'http://test.com/server1/Image?img=rk.jpg',
                3 => 'http://test.com/server1/Image?img=nek.jpg'
                );

    function foo($val){
        return str_replace(
            array('server1','Image'),
            array('server5','photo'),
            $val        
        );      

    }
    $res = array_map("foo",$data);

    var_dump($res); 
?>

正如 Rizier123 建议的那样,您可以通过以下方式在一行中完成:

var_dump(str_replace('server1/Image','server5/photo',$data));

【讨论】:

  • 完全不需要这个! str_replace() 也接受一个数组作为参数。所以所有这些函数调用都是不必要的。
【解决方案3】:

将您的值“查找”并将您的值“替换”到数组中..

$find    = array('server1', 'Image');
$replace = array('server5', 'photo');

$newString = str_replace($find, $replace, $oldString);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-11-02
    • 2012-09-14
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多