Точный поиск слова в тексте

СИ
На сайте с 09.05.2007
Offline
14
689

Господа, подскажите как такое реализовать:

Есть такие переменные:

$text="какой то тестовый текст __ тест"; текст где нужно найти

$words="тест";

Мне нужно узнать если в переменной $text слово из переменной $words. Причем так, чтобы он нашел не слово тестовый а ТОЛЬКО тест.

Если в переменная $text="какой то тестовый текст"; то скрипт не должен ругаться, что есть слово тест :)

Думаю задача моя понятна. уже битый час читаю yandex и доки, но т.к. только начинаю программирвоать, то сложно такое реализовать.

Подскажите пожалуйста :)

Язык : php

[Удален]
#1

Сам уже не программирую года два, а что, проверять после нахождения позицию слева и справа от слова (на символы алфавита) заратустра не позволяет ?

СИ
На сайте с 09.05.2007
Offline
14
#2

можно сделать регулярными выражениями, дык я сам то не могу :(( тока учусь

СИ
На сайте с 09.05.2007
Offline
14
#3

никто не сможет помочь? :)

D
На сайте с 14.01.2007
Offline
153
#4

попробую написать поподробнее то , что имел ввиду Миха.

Итак, можно подходить с двух сторон. 1 какие символы МОГУТ быть до или после слова. это могут пробелы, начало строки, конец строки. пример:

preg_match("/(^|\s)тест($|\s)/",$text);

2. Каких символов НЕ должно быть около слова: буквы, цифры,_. короче мороки больше :)

MK
На сайте с 18.08.2005
Offline
126
#5

Решений много может быть...


<?php

$text="тест какой то тест тестовый текст __ тест";
$words="тест";



echo $text;
echo '<h2>Точное</h2>';
preg_match_all("/(^|\s+)($words)($|\s+)/", $text, $result);
foreach ($result[0] as $k=>$v) {
echo "<br /> $k [$v]";
}


preg_match_all("/($words)/", $text, $result);
echo '<h2>Любые вхождения</h2>';
foreach ($result[0] as $k=>$v) {
echo "<br /> $k [$v]";
}


/////или
echo '<hr><h2>Без регулярных</h2>';
$texta=explode(' ', $text); $text=null;
$ok=0; $str='';
foreach($texta as $k=>$v) {
if($v==$words) {
$ok=1;
$str.="<i>$v</i> ";
} else $str.="$v ";

}

echo $str;

echo ($ok) ? ' [<b style="color:green">найдено</b>]':' [<b style="color:red">не найдено</b>]';
?>
нет
[Удален]
#6

Без регулярных написана лажа, даже навскидку, ибо там могут не только пробелы быть...

MK
На сайте с 18.08.2005
Offline
126
#7

preg_split("/[\s]+/", $text)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий