1

我是 php 新手,感染这是我在 php 中的第二个脚本,它是一个逐字转写的音译工具,它从 txt 文件中读取数据,然后用新的单词替换每个单词。它对小文本非常有效,但如果文本很大,它就会失败。请提供任何帮助。

<?php
$Urdu = array();
$Roman = array();
$str2replace = $_POST["S1"];
$Chr1 = array( "'", '"', "!", " ( ", " ) ", "@", "#", "$", "%", "^", "&", "*", ",", ".", "/", "?", "<", ">", ";", "[", "]", "{", "}", "،", "۔" , "؟", "+", "-",  "=", "_");
$Chr2 = array( " ' ", ' " ', " ! ", " ( ", " ) ", " @ ", " # ", " $ ", " % ", " ^ ", " & ", " * ", " , ", " . ", " / ", " ? ", " < ", " > ", " ; ", " [ ", " ] ", " { ", " } ", " ، ", " ۔ " , " ؟ ", " + ", " - ",  " = ", " _ ");
$str2replace = " " . $str2replace . " ";
$str2replace = str_replace(array("\n", "\r"), '', $str2replace);
$str2replace = str_replace($Chr1 , $Chr2, $str2replace);
$file = fopen("Dict.txt", "r");
while (!feof($file)) {
$String = fgets($file);
$String = str_replace(array("\n", "\r"), '', $String);
$pos = strrpos($String, "/");
if ($pos === false) { 
// Not Found
} else {
$Urdu[] = " " . substr($String, 0,$pos) . " "  ; 
$Roman[] = " " . substr($String, $pos+1) . " " ; 
  }
}
fclose($file);
$str2replace = str_replace($Urdu, $Roman, $str2replace);
$str2replace = str_replace($Chr2 , $Chr1, $str2replace);
$str2replace = substr($str2replace, 1);
echo $str2replace;
?>
4

1 回答 1

0
  1. 对于初学者来说,为什么你需要做 str_replace 5 次?这是要优化的第一件事。
  2. 为什么不将字典存储为数组并仅包含它,而不是每次都读取它。
于 2012-12-02T17:40:58.243 回答