Удалить несколько значений массива внутри строки - PullRequest
0 голосов
/ 06 мая 2020

Я хочу удалить или отфильтровать некоторые значения изображений, которые не существуют, в другую строку. В переменной $ description есть 2 значения изображений (images / bk5.jpg, images / bk3.jpg), а в переменной $ img - 4 значения изображений, и я хочу $ imgs_result (images / bk5.jpg, images / bk3.jpg) и хочу чтобы удалить еще 2 изображения значений переменной $ img.

<?php 

$description ='Some paragraph... &lt;p&gt;&lt;img src=&quot;images/bk5.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;242&quot; /&gt;&lt;img src=&quot;images/bk3.jpg&quot; alt=&quot;&quot; /&gt; Some paragraph...&lt;/p&gt;';

$img ='images/bk1.jpg images/bk3.jpg images/bk4.jpg images/bk5.jpg';

$imgpage = explode(" ",$img);

$imglength = count($imgpage);

for($x = 0; $x <= $imglength; $x++){
//This code delete the images from the database but does not remove or filter the values of variables.
   if(!stristr($description,$imgpage[$x])){

      $imgs_result = str_ireplace($imgpage[$x],"",$img);

      unlink($imgpage[$x]);

   }

}

?>

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Для этого вы можете использовать немного функционального программирования:

<?php

$description ='Some paragraph... &lt;p&gt;&lt;img src=&quot;images/bk5.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;242&quot; /&gt;&lt;img src=&quot;images/bk3.jpg&quot; alt=&quot;&quot; /&gt; Some paragraph...&lt;/p&gt;';

$img ='images/bk1.jpg images/bk3.jpg images/bk4.jpg images/bk5.jpg';

$imgpage = explode(" ",$img);

$imgs_result = array_filter($imgpage, function($image) use($description) {
    return stristr($description,$image);
});

print_r($imgs_result);
  • Чтобы увидеть, как работает код здесь .
  • Чтобы узнать больше о функциональное программирование здесь .
  • Библиотека, которая поможет вам с функциональным программированием в PHP здесь .
0 голосов
/ 06 мая 2020

Если у вас есть 2 строки, например:

$description = "images/bk5.jpg, images/bk3.jpg";
$img = "images/bk5.jpg, images/bk3.jpg, images/bk1.jpg, images/bk2.jpg";

Во-первых, вы можете использовать функцию explode () для преобразования ваших строк в массивы. И затем вы можете использовать функцию array_diff () , чтобы найти различия между этими массивами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...