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

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

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

 

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

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

тема: Поиск строки в строке.
 
 автор: DIM@   (19.04.2008 в 00:42)   письмо автору
 
 

Доброго все времени препровождения,

Подскажите, может кто нибудь уже разрабатывал или знает специальную (секретную :)) функцию,
нужно определить вхождение строки в строку поиска с маской для поиска, например:

Строка в которой выполняется поиск: "Ареометр для измерения плотности электролита"

Строка запроса "Арео*тр"

в общем надо как LIKE в SQL только для строк :)

Надеюсь изъяснился понятно.

   
 
 автор: Atheist   (19.04.2008 в 01:27)   письмо автору
 
   для: DIM@   (19.04.2008 в 00:42)
 

С помощью механизма регулярных выражений:

<?php
if( preg_match('/Арео.*тр/i''Ареометр для измерения плотности электролита'$match) )
{
    echo 
$match[0];
}
?>


Можно еще модификатор "s" добавить.

   
 
 автор: Wadimka   (09.05.2008 в 01:07)
 
   для: Atheist   (19.04.2008 в 01:27)
 

Вот так не работает!!!

#==== может быть оч, много масок в одной строке
$StrStroka="/index.php?df=.*&gh=.*/i";
$SamText="index.php?df=84938393&gh=jdkdjdkdjk";

$DataExplFind=$StrStroka;
if( preg_match($DataExplFind, $SamText, $match) )
{
echo $match[0]."<br>";
} else {print "Не найдено";}

подскажите, что и где не так и как правильнее сделать, чтоб можно было в одной строке куча масок ставить?

   
 
 автор: exp   (09.05.2008 в 02:57)   письмо автору
 
   для: Wadimka   (09.05.2008 в 01:07)
 

1.заэкранировать спецсимвол "?"
2.в данном случае жадное ".*" включит в себя всю строку до конца или до последнего совпадения идущего после него шаблона

можно инвертировать жадность, но лучше будет работать вместо .* например [^&]* или [0-9]*
3. /i было лишним , хоть и не мешало

например такой из вариантов
<?
$DataExplFind
="/index.php\?df=\d*&gh=[a-zA-Z]*/";
$SamText=".........index.php?df=84938393&gh=jdkdjdkdjk........";

if( 
preg_match($DataExplFind$SamText$match) )
{
 echo 
$match[0]."<br>";
} else {
 print 
"Не найдено";
}
?>

4. валидаторы ругаются на & везде на странице должно быть &amp;

   
Rambler's Top100
вверх

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