Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: оба параметра -в функции eregi - переменные
 
 автор: Alina   (08.02.2008 в 16:10)   письмо автору
 
 

вот что у меня есть
$search=eregi($qurey_str, $line[0], $res_arr);
$qurey_str- это строка которую пользователь вводит в поисковую форму
$line[0]-это запрос из файла
в принципе все работает, но ищет с любой позиции в $line[0] а я хочу что бы только с начала
Что мне сделать? как поправить выражение?

   
 
 автор: exp   (08.02.2008 в 17:23)   письмо автору
 
   для: 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>

   
 
 автор: Alina   (11.02.2008 в 14:15)   письмо автору
 
   для: exp   (08.02.2008 в 17:23)
 

exp- ВЫ ЧУДО!!!!
то что нужно ! отлично работает!

   
 
 автор: Alina   (04.03.2008 в 16:48)   письмо автору
 
   для: 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) - $headtime4) . '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]

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования