6 つの異なるテキストエリアから入力を取得し、区切り文字として \r\n を使用して配列を展開し、データの各セットを 2 回ループして置換しています。
たとえば、リストされているメインの色に似た色を入力できるテキストエリア入力があるので、「青」というタイトルのテキストエリアの入力は次のようになります。Aqua\r\nRoyal Blue\r\nTeal
次に、赤、オレンジ、黄、緑、紫の入力ボックスに同様のデータを入力します。
ユーザー入力 (この例では Aqua) を に置き換えたいと思います<span class="blue">Aqua</span>
。青いボックスに入力されたものはすべて 'blue' クラスにラップされ、赤から何かが にラップされますclass="red"
。
私はこれをすべてうまく機能させ、データの各セットを 2 回循環させました。
$find_blue = explode ("\r\n", $blue);
$replace_blue = explode ("\r\n", $blue);
$i = 0;
foreach($replace_blue AS &$html)
{
$find_blue[$i] = trim($find_blue[$i]);
$html = '<span class="blue">' . $find_blue[$i] . '</span>';
$i++;
}
foreach($find_blue AS &$found)
{
$found = preg_quote(htmlspecialchars($found));
$found = '~\b('.$found.')\b)~i';
}
$output = preg_replace($find_blue, $replace_blue, $output);
これは問題なく動作しますが、12 個のループ (色ごとに 2 回) がすべて同じことを行っているという扱いにくいコードだと思います。よりクリーンで効率的で優れたコードを書きたいと思っています。また、array_merge が存在することは知っていますが、それを統合する方法や、すべてを一貫性とまとまりのあるものにする方法がわかりません。