0

だから私はここでかなり単純な問題を抱えています。

コンマで区切られたリストで str_replace 関数を実行して、前にコンマがある値を削除すると、関数はリスト内のすべてのコンマを削除します。

ここで何が間違っていますか?

問題のオブジェクト:

$tags = "16, 17, 18, 20, 21, 22"

$tag_id = "17"

コード:

if (strpos($tags, ', '.$tag_id))
{
 //remove this in this format
  $new_tags = str_replace(', '.$tag_id, "", $tags);
}
elseif (strpos($tags, $tag_id.', '))
{
  //remove this in this format
  $new_tags = str_replace($tag_id.', ', "", $tags);
}
else
{
  //just remove the number
  $new_tags = str_replace($tag_id, "", $tags);
}
4

3 に答える 3

3

あなたが実際に探しているのは次のとおりだと思います:

$tags = (...);
$tag_id = 17;
$tags_array = explode(',', $tags);
if(($idx = array_search($tag_id , $tags_array )) !== false) {
    unset($tags_array[$idx]);
}
$tags_cleaned = implode(', ', $tags_array);
//16, 18, 20, 21, 22

機能例

于 2015-07-09T05:16:52.267 に答える
0

str_replace を実行する前に $tag_id が正しく初期化されていますか?

于 2015-07-09T05:17:23.697 に答える
0

このcsvリスト操作を配列で処理する方が簡単だと思います。爆発といくつかの配列操作を使用すると、それを行うのに役立ちます。

$list = array_map('trim', explode(',', $tags));
$flippedList = array_flip($list);
unset($flippedList[$tagId]);

$newTags = join(',', array_flip($flippedList));
于 2015-07-09T05:17:51.123 に答える