0

変数に格納された文字列があります。この文字列は次のように表示されます。

$sec_ugs_exp = ''; //Empty one
$sec_ugs_exp = '190'; //Containing the number I want to delete (190)
$sec_ugs_exp = '16'; //Containing only a number, not the one Im looking for
$sec_ugs_exp = '12,159,190'; // Containing my number at the end (or in beginning too)
$sec_ugs_exp = '15,190,145,86'; // Containing my number somewhere in the middle

190番号が存在する場合は削除し、番号が最後にあるか単独でない限り、その後に付けられたコンマも削除する必要があります(その場合、コンマはありません)

したがって、前に書いた例では、次のようなリターンを取得する必要があります。

$sec_ugs_exp = '';
$sec_ugs_exp = '';
$sec_ugs_exp = '16';
$sec_ugs_exp = '12,159';
$sec_ugs_exp = '15,145,86';

私の英語について申し訳ありません。preg_replace などを使用してみましたが、常にカンマの検出に失敗していました。

4

6 に答える 6

3

正規表現を使用しない最後の試み:

$codes = array_flip(explode(",", $sec_ugs_exp));
unset($codes[190]);
$sec_ugs_exp = implode(',', array_keys($codes));
于 2012-09-10T18:18:53.647 に答える
2

単純な正規表現でうまくいくはずです:/(190,?)/ :

$newString = preg_replace('/(190,?)/', '', $string);

デモ: http://codepad.viper-7.com/TIW9D6

または、次のような一致を防ぎたい場合:

$sec_ugs_exp = '15,1901,86';
                   ^^^

使用できます:

(190(,|$))
于 2012-09-10T18:19:38.410 に答える
1
$array = explode ( ',' , $sec_ugs_exp );

foreach ( $array AS $key => $number )
{
  if ( $number == 190 )
  {
    unset($array[$key]);
  }
}

$sec_ugs_exp = implode ( ',' , $array );

これは、1903または9190の場合に数値が機能する場合に機能します

于 2012-09-10T18:23:51.773 に答える
1

速くて汚いですが、あなたのために働くはずです:

str_replace(array(",190","190,","190"), "", $sec_ugs_exp);

配列内の順序が重要であることに注意してください。

于 2012-09-10T18:19:49.937 に答える
1

ここでの回答はどれも、で始まるまたは終わる数字を説明していません190

$newString = trim(str_replace(',,', ',', preg_replace('/\b190\b/', '', $string)), ',');
于 2012-09-10T18:23:40.917 に答える
0

試す

str_replace('190,', '', $sec_ugs_exp);
str_replace('190', '', $sec_ugs_exp);

また

str_replace('190', '', $sec_ugs_exp);
str_replace(',,' ',', $sec_ugs_exp);

文字列に余分なスペースがない場合

于 2012-09-10T18:21:03.430 に答える