0

によってsubstr_replace、特定のインデックスに文字列を挿入できます。

$a = 'abcdefg';
echo substr_replace($a, '1', 2, 0); // ab1cdefg

しかし、1つだけで特定の位置に2〜3本の文字列を挿入することは可能substr_replaceですか?(または他の組み込み関数)例:

$a = 'abcdefg';
$b = array('1', '2', '3');
$c = array(1, 2, 4);
echo substr_replace($a, $b, $c, 0); // a1b2cd3efg

そのコードを試しましたが、エラーが返されました:

警告: substr_replace()[function.substr-replace]:'from'と'len'は同じタイプ(数値または配列)である必要があります

ありがとう...

4

1 に答える 1

3

さて、最初に、マニュアルを読んだことから、あなたのコードは機能するはずだと思いました。あなたは正しく設定されたルールに従っているようです。

さらにばかげているのは、0sの配列をに渡して修正しようとすると$len(そのエラーメッセージに基づいて妥当なように聞こえますが、違いますか?)、次のようになります

警告:substr_replace():配列としての「from」および「len」の機能は実装されていません

右。したがって、マニュアルが間違っているだけでなく、エラーメッセージも矛盾しています。神様私はPHPが大好きです。

しかし、これで十分です、解決策に...


期待どおりに機能しないため、必要な処理を実行するにはループする必要があります。難しくないですよね?さて、ここでの主なつまずきの危険は、弦の長さとオフセット位置が反復ごとに変わることです。これが問題を引き起こすのを防ぐために、インデックスが期待どおりの場所になるように、逆に置換を実行する必要があります。

このようなもの:

<?php

  $a = 'abcdefg';
  $b = array('1', '2', '3');
  $c = array(1, 2, 4);

  for ($i = count($c) - 1; $i >= 0; $i--) {
    $a = substr_replace($a, $b[$i], $c[$i], 0);
  }
  echo $a; // a1b2cd3efg

それが機能しているのを見る

于 2012-08-07T09:10:17.773 に答える