1

したがって、私はこれに固執しています-配列内のテキストを置き換えようとしています(str_replaceを介して簡単に実行できます)が、その特定の配列の末尾にテキストを追加したいとも考えています。たとえば、私の元の配列は次のとおりです。

配列 (

[1] => DTSTART;VALUE=DATE:20130712
[2] => DTEND;VALUE=DATE:20130713
[3] => SUMMARY:Vern
[4] => UID:1fb5aa60-ff89-429e-80fd-ad157dc777b8
[5] => LAST-MODIFIED:20130711T010042Z
[6] => SEQUENCE:1374767972

)

その配列で ";VALUE=DATE" を検索し、何も置き換えません ("") が、置換ごとに 7 文字のテキスト文字列を挿入したい ("T000000")。したがって、結果の配列は次のようになります。

配列 (

[1] => DTSTART:20130712T000000
[2] => DTEND:20130713T000000
[3] => SUMMARY:Vern
[4] => UID:1fb5aa60-ff89-429e-80fd-ad157dc777b8
[5] => LAST-MODIFIED:20130711T010042Z
[6] => SEQUENCE:1374767972

)

str_replace、substr_replaceなどの組み合わせを使用して、このようなことは可能ですか? 私はPHPにかなり慣れていないので、誰かが私を正しい方向に向けることができれば幸いです! どうもありがとう

4

4 に答える 4

4

preg_replaceこのタイプの操作のワンストップ ショップとして使用できます。

$array = preg_replace('/(.*);VALUE=DATE(.*)/', '$1$2T000000', $array);

正規表現は、それを含む任意の文字列に一致し、その;VALUE=DATE前後にあるものをすべてキャプチャ グループ (置換パターンでは $1 および $2 と呼ばれます) にキャプチャします。次に、その文字列を $1 を $2 に連結したものに置き換え (実質的に検索対象を削除します) "T000000"、結果に追加します。

于 2013-07-25T21:49:46.260 に答える
1

素朴なアプローチは、各要素をループして をチェックすることです;VALUE=DATE。存在する場合は、削除して追加しますT000000

foreach ($array as $key => $value) {
  if (strpos($value, ';VALUE=DATE') !== false) {
    $array[$key] = str_replace(";VALUE=DATE", "", $value) . "T000000";
  }
}
于 2013-07-25T21:48:39.070 に答える
0

str_replace()あなたが探している機能は正しいです。さらに、連結演算子を使用し.て、文字列を新しい文字列の末尾に追加できます。これはあなたが探しているものですか?

$array[1] = str_replace(";VALUE=DATE", "", $array[1])."T000000";
$array[2] = str_replace(";VALUE=DATE", "", $array[2])."T000000";
于 2013-07-25T21:47:48.560 に答える