|
|
|
| Доброго все времени препровождения,
Подскажите, может кто нибудь уже разрабатывал или знает специальную (секретную :)) функцию,
нужно определить вхождение строки в строку поиска с маской для поиска, например:
Строка в которой выполняется поиск: "Ареометр для измерения плотности электролита"
Строка запроса "Арео*тр"
в общем надо как LIKE в SQL только для строк :)
Надеюсь изъяснился понятно. | |
|
|
|
|
|
|
|
для: 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 "Не найдено";}
подскажите, что и где не так и как правильнее сделать, чтоб можно было в одной строке куча масок ставить? | |
|
|
|
|
|
|
|
для: 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. валидаторы ругаются на & везде на странице должно быть & | |
|
|
|