Я прочитал много постов и пытались многие вещи,Поиск строки в файле на другом языке - PHP - UTF-8
У меня есть несколько файлов монстра в сервере игры я работаю, Игра - это корейская игра, поэтому многие кодовые слова в корейском стиле.
Я пытаюсь получить строку, которая начинается с *아이템
, за которой следует строка, которую я хочу. Я установил default_encoding в UTF-8. я могу найти строку на основе других битов в нем, но я хочу, чтобы исключить, что *아이템
от моего выхода,
образец для кода:
ini_set("max_execution_time", 0);
$monsdbconn = sqlsrv_connect("INSTANCE\SQLEXPRESS", array("Database" => "MonsDB", "UID" => "BLAH", "PWD"=> "BLAH"));
$monsDir = realpath('C:/PT-Server/GameServer/Monster/');
$monsters = new RecursiveDirectoryIterator($monsDir);
if (@$monsdbconn) {
$clearit = "DELETE FROM monsdrops";
if (sqlsrv_query($monsdbconn,$clearit)) {
foreach($monsters as $name => $object){
$monstername = "";
if (stripos($name, '.inf')){
$monsterfile = file($name);
$items = array("WA*", "WP*", "DA*", "WC*");
foreach ($monsterfile as $monster) {
if (strstr($monster, "Name")) {
//things to remove from the string.
$monstrip = array("*Name",'"');
//Remove "" and *Name from the string
$monstername = str_replace($monstrip, "", $monster);
//Remove spaces from start and end of string to prevent
//Duplicate entries, Will not remove space from between words.
$monstername = trim($monstername," "); // Space
$monstername = trim($monstername," "); // Tab
}
// THIS IS THE POINT IM SEARCHING FOR ITEMS AT THE MOMENT, BUT I NEED IT TO FIND THE KOREAN CHAR SET
if (preg_match("/\D{2}\d{3}/", $monster)) {
$string = preg_split("/(\s)/", $monster);
foreach ($string as $line) {
if ((preg_match("/\D{2}\d{3}/", $line)) && ((stripos($line, "name\\") === false) || stripos($line, ".zhoon") === false)) {
$sqlinsert = "INSERT INTO monsdrops ([monstername],[monsterdrops]) VALUES ('$monstername', '$line')";
$insert = sqlsrv_query($monsdbconn, $sqlinsert);
if ($insert) {
echo "Insert $monstername, $line Successful! <br />";
} else {
echo "<br />Insert Failed! <br />";
print_r(sqlsrv_errors());
}
}
}
}
}
}
}
} else {
echo "Unable To Clear DB";
}
} else {
echo "Unable to connect to DB";
}
@sqlsrv_close($monsdbconn);
однако он не может найти символы, Если я выбираю другую часть строки и повторяю ее, символы показывают (поскольку я устанавливаю default_encoding), но она не может найти ее, и ее больно, поскольку в списке есть много триггерных слов, которые я хочу найти в корейском.
Заранее спасибо.
пример файла будет:
*아이템 5000 ec101 db120 da120 dg120
ec101 и т.д., что я пытаюсь воруют.
безуспешно пытались выполнить mb_stripos и попытались снова с кодом, представленным ниже, безрезультатно. он просто не находит текст, однако, если я установил его для поиска ec101, он будет, но я не могу гарантировать, что это будет в строке, поэтому я использовал preg_match, но это работает только для капель, это не будет работать для все другие биты информации, которую я пытаюсь найти из файлов
пытался что, его не найти его:/ я вернулась теперь дома, так что я буду обновлять пост с полным кодом (но вырезать ненужные вещи) –
обновляются сейчас, попробовал его и без звездочки в передней части корейских персонажей, это меня озадачило. Нужно ли мне избегать звездочки, если оно находится внутри кавычек? –
Я только что протестировал этот код, и он отлично работает. Я бы предположил, что ваша проблема лежит в другом месте. Вы уверены, что этот текст является UTF-8, а не какой-то устаревшей кодировкой? – miken32