-1

我正在尝试替换数组中的单词,但仅在名为 pixlist 的帖子“newOrder”中的最后一个 empty.png 之后。现在我让它用任何东西替换单词,但希望在 $pixlist 的最后一个 empty.png 之后替换字符串

$replaceThis = array("blank.png", "sold.png", "payed.png");
$pixlist = $_POST["newOrder"];
$pixlist =  str_replace($replaceThis,'', $pixlist);
$trimmed = trim($pixlist);

$filename  =  'pics.txt';
$handle =  fopen($filename, 'w');
fwrite($handle, $trimmed);
fclose($handle);

甚至更好的是,删除最后一个单词“empty.png”之后的所有内容$_POST["newOrder"]

PS $pixlist 是一个图像数组

$pixlist = trim(substr($pixlist,0,strrpos($pixlist,'empty.png')));

这有效,但它删除了empty.png这个词,我要改变位置来修复它吗?我要改变什么?

4

4 回答 4

1
$pixlist =  trim(substr($pixlist,0,strrpos($pixlist,'empty.png')));

如果你想保留empty.png:

$pixlist =  trim(substr($pixlist,0,strrpos($pixlist,'empty.png')+9));
于 2013-07-20T06:00:29.087 回答
0
 $pixlist = $_POST["newOrder"];

所以,我认为$pixlist是字符串而不是数组。

好的,尝试使用此代码:

  $key = 'empty.png';
  $len = strlen($key);
  $pixlist = trim(substr($pixlist,0,strrpos($pixlist, $key) - $len));

更新

    $pixlist = 'aaaaaempty.pngabbbbbbbbb';
    $key = 'empty.png';
    $len = strlen($key);
    $pixlist = trim(substr($pixlist, 0, strrpos($pixlist, $key) + $len));
    echo $pixlist;
    // will echo aaaaaempty.png
于 2013-07-20T06:12:18.067 回答
0

您可以将其炸开...替换数组中的最后一个元素,然后将其内爆

$data = explode("empty.png", $str);
$last = array_pop($data);
$last = str_replace($replaceThis,"", $last);
array_push($data, $last);
echo implode("empty.png", $data);
于 2013-07-20T06:19:38.497 回答
0

目前尚不清楚您要在这里做什么。是什么'empty.png'?我只看到'blank.png'。应该是什么$_POST["newOrder"]?它是数组还是字符串?您将它分配给一个名为“pixlist”的变量,所以它听起来像一个列表,这意味着数组。

我认为我们需要更多细节才能回答您的问题。

另外,我不确定为什么我不能对原始问题发表评论。很抱歉为此使用答案,但我没有看到其他地方可以发表评论。

我仍然不知道我是否完全理解你的问题,但我假设如果给出下面的数组,你想在最后一次出现“empty.png”之后修剪掉所有内容。如果是这样,下面是你如何做到这一点。

$pixlist = array('empty.png', 'image.png', 'empty.png', 'something.png', 'else.png');


// 1. Reverse the array so that we work backwards in from the end, and preserve the original keys.

$pixlist = array_reverse($pixlist, true);


// 2. Search for the first occurance of 'empty.png', since the array was reversed, this will technically be the last occurance.

$key = array_search('empty.png', $pixlist);


// 3. Reverse the array again

$pixlist = array_reverse($pixlist, true);


// 4. Now trim the array using the $key we got from step 2

array_splice($pixlist, $key + 1);


// is now just array('empty.png', 'image.png', 'empty.png');
echo '<pre>';
print_r($pixlist);
于 2013-07-20T05:53:30.697 回答