Поиск в xml и вывод результата!

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
SweetTequila
Сообщения: 1
Зарегистрирован: 03 июл 2013, 09:21

06 ноя 2013, 13:57

Люди добрые,помоги пожалуйста,темному человеку
Дело в том,что,на компьюторе установлен Denwer (PHP 5.3.13, MySQL 5.1, PostgreSQL 8.4 etc.) ,а бд в Postgresql ставит таблицы в кодировке только win-1251.В другой кодировке бд не устанавливаеться,выдает ошибку.Так проблема в том,что когда вводится английские слова,то выдаются xml документы в которых это слово встречается,а если вводить русские слова или некий текст,то просто белый экран и больше ничего.В чем может быть проблема? (((
Очень нужна ваша помощь

Код: Выделить всё

<?php
header( 'Content-Type: text/html; charset=utf-8');
if (isset($_GET['search']) && ($_GET['search'] != ""))
{
// поисковой запрос
$str = $_GET['search'];
function prepString($str) {
// шаблоны для поиска
$pattern = array( 
1 => '/((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$/',
2 => '/(с[яь])$/',
3 => '/(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|еых|ую| юю|ая|яя|ою|ею)$/',
4 => '/((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$/',
5 => '/((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ены|ит ь|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$/',
6 => '/(а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|и|ы|ь|и ю|ью|ю|ия|ья|я)$/'
);
// подготовка строки для поиска
if ( preg_match($pattern[1], $str) ) {
$test = preg_replace($pattern[1], '.*', $str);
} else if( preg_match($pattern[2], $str) ) {
$test = preg_replace($pattern[2], '.*', $str);
} else if( preg_match($pattern[3], $str) ) {
$test = preg_replace($pattern[3], '.*', $str);
} else if( preg_match($pattern[4], $str) ) {
$test = preg_replace($pattern[4], '.*', $str);
} else if( preg_match($pattern[5], $str) ) {
$test = preg_replace($pattern[5], '.*', $str);
} else if( preg_match($pattern[6], $str) ) {
$test = preg_replace($pattern[6], '.*', $str);
} else {
$test = $str . '.*';
}
return $test;
}
// формируем строку для поиска
$str = explode(" ", trim($str));
$search = '/';
foreach ( $str as $val ) {
$search .= prepString($val);
}
$search .= '/xsi';
// устанавливаем соединение с БД
$db = pg_connect("host=localhost dbname=labsxml user=postgres password= ") 
or die("Ошибка подключения к БД:" . pg_last_error());
$sql = 'SELECT name, opicanie FROM "gods"';
$query = pg_query($db, $sql) or die("Ошибка запроса:" . pg_last_error());
while ( $data = pg_fetch_array($query, NULL, PGSQL_ASSOC) ) {
$result[] = $data;
}
foreach ( $result as $val ) {
if ( preg_match($search, $val['name']) ) {
echo $val['opicanie']; 
echo '
';
}
}
pg_close($db);
}
?>
Ответить