Кирилица с $_GET

index.php
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
<body>

	   
  <form name="search" method="get" action="search.php">
    <input type="text" name="find" maxlength="80" value="Search" /> 
    <input type="hidden" checked="checked" name="searching" value="1" />
    <input type="submit" name="search" value="Търси" class="inputbut" />
    </form>

 </body>
 </html>

а search.php
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php 
$s= $_GET['find'];
$find4 = trim ($s);
 
 if($_GET['searching']==1)
 {
 setlocale(LC_ALL, 'nl_BG'); // това незнам дали тук му е мястото, но и с него и без него пак не става
if(!preg_match("/^[a-zа-я0-9]/ui", $find4))  
	  {
	   
	   $find4= preg_replace('/[^a-zа-я0-9]/ui', '-', $find4); 
	   $find4= trim($find4);
	  } 

		
		echo "<br>".$find4;
		}
		?>
		</body>
		</html>

като на preg_replace пробвах да сложа накрая /eui, но няма ефект.
 
index.php
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form name="search" method="get" action="search.php">
	<input type="text" name="find" maxlength="80" value="Search" />
	<input type="hidden" checked="checked" name="searching" value="1" />
	<input type="submit" name="search" value="Търси" class="inputbut" />
</form>
</body>
</html>

search.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Minirca Online Films</title>
</head>
<body>
<?php
ini_set('default_charset', 'cp1251'); 
function filter($string) {
        return preg_replace('/[^a-zа-яА-ЯA-Z0-9\s\-]/', '', $string);
}
$_GET = array_map("filter", $_GET);
if($_GET['searching'] == 1) {
	$find4 = (empty($_GET['find'])) ? 'празно поле' : trim($_GET['find']);
	echo "Търсене на: {$find4}";
} else {
	echo "Searching input is not value 1";
}
?>
</body>
</html>


Пробвай така, като файловете трябва да са с кодировка ANSI. Би трябвало да няма ник'ви ядове :?:
 
Еми толкова ли е трудно да се смени тирето с празно място. Нямам думи вече. Това е работа на един backspace и space.


ЕДИТ: @alex3 примера ти е леко неточен всъщност. По-скоро така би трябвало да е http://codepad.viper-7.com/g3PotL или по твоя пример http://codepad.viper-7.com/Nv3z7x така...
 
nom3r1 каза:
alex3 каза:
Пак ще го повторим и потретим в regex няма а-зА-З.

http://codepad.viper-7.com/mrt0bN

По този начин ще изкара кирилицата като тирета.

Извинявайте, аз мислех че това е целта, не се зачетох. :)
Просто се слага 1 флаг u и ще работи и с кирилица. :)
http://codepad.viper-7.com/gTT3gO
 
relax4o каза:
Еми толкова ли е трудно да се смени тирето с празно място. Нямам думи вече. Това е работа на един backspace и space.


ЕДИТ: @alex3 примера ти е леко неточен всъщност. По-скоро така би трябвало да е http://codepad.viper-7.com/g3PotL или по твоя пример http://codepad.viper-7.com/Nv3z7x така...

Естествено, че тирето може да се замени - не ставаше въпрос за него.

@alex, ме е разбрал. :?:
 
Благодаря много на всички, които ми помогнаха, кодовете които дадоха nom3r1 и този на alex3 - http://codepad.viper-7.com/mrt0bN вървят без грешка! Другите два варианта на http://codepad.viper-7.com/mrt0bN нещо не ми работеха.
 

Back
Горе