1

15,000 行の PHP 配列があります。各行を繰り返し処理して、15,000 行の Javascript 配列を生成する必要があります。PHP 配列の各行には、5% の確率で 1 つ以上の HTML 特殊文字が含まóれているため、同等の JavaScript 16 進数に置き換える必要があります。約 50 個の HTML 特殊文字を探して置換する必要があるため、str_replace(array_of_HTML_targets, array_of_hex_replacements, haystack). 次のほうが効率的ですか?

  1. PHP 配列の各行を調べ、アンパサンドを検索し、存在する場合は検索と置換を行います (これが行の 5% のみに適用されることを考慮してください)。
  2. 配列全体で検索と置換を実行する
  3. 配列を 1 つの巨大な文字列に連結し、その巨大な文字列に対して検索と置換を実行します
  4. 他のアイデア?ご指定ください

ところで、15,000 PHP 配列の理由は、これがデータ視覚化アプリだからです。

4

1 に答える 1

4

既に PHP データを文字列 (おそらく JSON) にダンプする必要があるため、次のように最終的な文字列で作業することもできます。

$json = json_encode($your_php_array);
$unhtmlref = preg_replace_callback("/&#(x[0-9a-f]+|\d+);/",function($m) {
    if( $m[1][0] == "x") $m[1] = substr($m[1],1);
    else $m[1] = dechex($m[1]);
    return sprintf("\\u%04s",$m[1]);
},$json);

HTML 文字コードは JSON 文字列で特別な意味を持たないため、これは安全です。

そうは言っても、私は JavaScript の「ユーティリティ ベルト」に同様の機能を持っています。

function unHTMLref(str) {
    // take a string and return it, with all HTML character codes parsed
    var div = document.createElement('div');
    div.innerHTML = str.replace(/</g,"&lt;");
    return div.firstChild.nodeValue;
}

したがって、基本的には、前または後に解析できます。個人的には、サーバーがより重要なことを実行できるようにして、「単調な」作業の一部をブラウザに移す「後」の方が好きです。

于 2013-11-01T14:33:43.180 に答える