私のウェブサイトにこのコードがありますが、この関数はすべてのWebページで呼び出されますが、遅いです(私は多くの研究を行い、この関数を使わないとTTFBは約100msですが、 2秒さえ)。私のPHP関数をスピードアップ
この機能は、カードデータベースに一致するものが見つかった場合、[]内のすべてのテキストをリンクに置き換えます。例えば:[インナー炎] >>ウェブサイト上の出力は次のようになります。それは本当に素晴らしい働いているが、3000枚のカードがデータベースに存在し、これが遅い
<a href/card/id/name" class="quality1">Inner Fire</a>
。誰でもプロセスをスピードアップするためのより良いソリューションを考え出すことができますか?
ありがとうございます。
コードの前にいくつかの明確化: sql_query:
function sql_query($conn, $query)
{
return mysqli_query($conn, $query);
}
sql_fetchと同様の機能。
char_convert:HTMLエンティティ(10進数)
function coloredcard($text)
{
global $conn;
$query = "SELECT id, quality, name, collectible FROM cards";
$result = sql_query($conn, $query);
while ($card = sql_fetch($result))
{
$name_replace = strtolower(str_replace(str_split("\' "), "-", $card['name']));
if ($card['collectible']!=0) //if collectible, replace [card_names]
{
$from = '['.char_convert($card['name']).']';
$to = '<a href="/card/'.$card['id'].'/'.$name_replace.'" class="quality'.$card['quality'].'">'.$card['name'].'</a>';
$text = str_ireplace($from, $to, $text);
}
elseif ($card['collectible']==0) //if not collectible replace (noncollectible card names)
{
$from = '('.char_convert($card['name']).')';
$to = '<a href="/card/'.$card['id'].'/'.$name_replace.'" class="quality'.$card['quality'].'">'.$card['name'].'</a>';
$text = str_ireplace($from, $to, $text);
}
}
return $text;
}
にUTF-8文字に変換しますが、さらに情報が必要な場合は私に知らせてください。
これはおそらく最高の答えです。本当に素晴らしいですね。 – Joey
もう少しお手伝いできますか?それは素晴らしい仕事ですが、私は小さな問題があります。私のpreg_match_allは/ \ [([^ \]] *)\] /のように見えますが、[[Inner Fire]]と入力すると[Inner Fire]になります。なぜそれが最後から2つを取り除くのですか?]最初から削除しますか?私はそれをすべての状況で取り除きたい。 – Joey