在foreach语句中更改网址

时间:2018-07-12 12:30:53

标签: php foreach preg-replace

我们有一些代码可以从外部来源获取图片网址。我们修改

<?php
$imagez = get_field('prop_gallery_images');
foreach($imagez as $image) {
    if($image['type']==0) {
        ?>
        <img src="<?=$image?>">
        <?php
    }
}
?>

结果:

<img src="http://www.externalsource.com/store/property/165+156_sm.jpg">
<img src="http://www.externalsource.com/store/property/165+158_sm.jpg">
<img src="http://www.externalsource.com/store/property/165+159_sm.jpg">

我想将表示_sm的url更改为_web,因为这带来了图像的更高分辨率版本。我考虑过使用preg_replace,但是由于以前没有做过这些,所以不确定在foreach语句中如何使用?也不确定这是否是最干净的方法。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用str_replace很简单:

arr = [1, 2, 3, 4, 5]
new_arr = []

arr.each do |n|
  new_arr << n + 2
end

p arr
p new_arr

答案 1 :(得分:0)

如果您要以“干净”的数组开头(例如,抽象逻辑),则可以使用array_map。此函数将用户定义的函数应用于数组中的每个元素。

<?php

$images = array(
  'http://www.externalsource.com/store/property/165+156_sm.jpg',
  'http://www.externalsource.com/store/property/165+158_sm.jpg',
  'http://www.externalsource.com/store/property/165+159_sm.jpg',
);

$highresImages = array_map(function($url) {
  return str_replace('_sm.', '_web.', $url);
}, $images);

print_r($highresImages);

输出:

Array
(
    [0] => http://www.externalsource.com/store/property/165+156_web.jpg
    [1] => http://www.externalsource.com/store/property/165+158_web.jpg
    [2] => http://www.externalsource.com/store/property/165+159_web.jpg
)

https://eval.in/1035497