Люди добрые,помоги пожалуйста,темному человеку Дело в том,что,на компьюторе установлен 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 '<br>'; } }
pg_close($db); } ?>
|
Это сообщение отредактировал(а) SweetTequila - 6.11.2013, 12:53
|