|
|
|
| вот что у меня есть
$search=eregi($qurey_str, $line[0], $res_arr);
$qurey_str- это строка которую пользователь вводит в поисковую форму
$line[0]-это запрос из файла
в принципе все работает, но ищет с любой позиции в $line[0] а я хочу что бы только с начала
Что мне сделать? как поправить выражение? | |
|
|
|
|
|
|
|
для: Alina
(08.02.2008 в 16:10)
| | наверное просто обозначить " ^ " - начало строки
<?
$qurey_str = preg_quote( $_GET['query'], '"') ; /* только надо все спецсимволы ещё как-то заэкранировать
или удалить из строки */
$search=eregi("^$qurey_str", $line[0], $res_arr);
?><pre><?
print_r($res_arr);
?></pre>
|
| |
|
|
|
|
|
|
|
для: exp
(08.02.2008 в 17:23)
| | exp- ВЫ ЧУДО!!!!
то что нужно ! отлично работает! | |
|
|
|
|
|
|
|
для: Alina
(11.02.2008 в 14:15)
| | подскажите пожалуйста.
как организовать точный поиск
для примера я в некотором массиве ищу 1500 и мне надо что бы находились элементы, торые начинаются именно с 1500, а не с 15 или 150 | |
|
|
|
|
автор: ЧУДО :) (04.03.2008 в 22:07) |
|
|
для: Alina
(04.03.2008 в 16:48)
| | :)
наверное много способов есть
вот такие два например
<? 'файл text.txt' ?>
150000 abc1
150 abc2
15 abc3
500 abc4
00 abc5
1500 abc
|
<pre><?php
list($headtime, $time) = explode(chr(32), microtime());
$headtime = ($time + $headtime); # время начала работы
$search = '1500'; #
/* n1-comment
$array = file('text.txt');
function uns_nomatch($value, $key, $search)
{
global $array ;
if (!ereg("^$search", $value)) unset( $array[($key)] );
return;
}
array_walk($array, 'uns_nomatch', $search);
// */
// /* n2 - comment
$temp = file('text.txt');
function uns_nomatch($var) {
global $search;
return (ereg("^$search", $var));
}
$array = array_filter($temp, "uns_nomatch");
// */
print_r($array);
list($msec,$sec) = explode(chr(32), microtime());
echo '<hr />[_' . round(($sec + $msec) - $headtime, 4) . 's_]';
?>
<hr>
случались такие результаты при около 700 таких строк текста
[_0.0039s_] n1 при if (!preg_match("#^$search#", $value))
[_0.0031s_] n1 при if (!ereg("^$search", $value))
[_0.0026s_] n2 при return (ereg("^$search", $var));
[_0.0034s_] n2 при return (preg_match("#^$search#", $var));
</pre>
|
| |
|
|
|
|
автор: _гость_ (05.03.2008 в 12:12) |
|
|
для: ЧУДО :)
(04.03.2008 в 22:07)
| | такой способ наверное быстрее всего окажется
<pre><?
$search = '1500'; #
$temp = file('text.txt');
foreach($temp AS $k => $v)
{
if (ereg("^$search", $v)) $array[($k)] = $v;
}
print_r($array);
?></pre>
|
[_0.002_s] | |
|
|
|