1

do ループは 15 ~ 20 回実行する必要があるため、速度が心配です。各ループ中に、数回検索と置換を行い、毎回 mysql テーブルから選択します。できる限り速くしたいだけです。

$text = file_get_contents('texts/phir-mohabbat.txt');
preg_match_all('/\S+@/', $text, $words);
preg_match_all('/@\S+/', $text, $lexs);

$count = count($words[0]);
$i = 0;
do {
  $bad = array('@', ',', '।', '?');
  $word = str_replace('@', '', $words[0][$i]);
  $lex = str_replace($bad, '', $lexs[0][$i]);
  if($lex == '#') {$lex = $word;}

  $get_def = mysqli_query($con,"SELECT * FROM hindi_dictionary WHERE lex = '$lex'");
  while($row = mysqli_fetch_array($get_def)) {
    $def = $row['def'];
    }
  $find = array($word.'@'.$lex, $word.'@#');
  $replace = '<span class = "word-info" onmouseover="show_info(\''.$lex.' - '.$def.'\',\''.$word.'\');">'.$word.'</span>';

  $text = str_replace($find, $replace, $text);
  $i++;
  } while ($i < $count);

echo nl2br($text);
4

1 に答える 1