Как определить, входит ли слово (подстрока) в строку? НЕ strpos

Kood-Good

Новичок
Как определить, входит ли слово (подстрока) в строку? НЕ strpos

Нужно определить входит ли слово (или несколько) в какую-нить фразу.
Например имеем слово car. Проверяем следующие строки:

1. car driver
2. green card
3. little car on street

strpos скажет что подойдут все строки, а мне нужны только 1 и 3
 
вот блин... не хотелось бы исполдьзовать эту функцию, т.к работает она не очень быстро. другого способа нет?
 
Kood-Good
Глупости. Не покривлю душой, если скажу, что программируя на PHP, о производительности вот таких тонких моментов надо думать, ну если не в последнюю очередь, то уж точно в предпоследнюю.
 
avm
тем более, что вы это заметили ;) зачем тогда было предлагать вариант, который в принципе не подходит? тут вроде как за число мессаджей не платят.
ведь не платят, да? ;)
 
zerkms. для того чтобы топикстартер в будущем знал и про такой простейший вариант. А то он был убежден:
strpos скажет что подойдут все строки, а мне нужны только 1 и 3
до моего ответа здесь было только одно принципиальное решение - ваше.
Ну а про знаки препинания уже вы сами выдумали.
 
avm
боюсь что ваш "простейший" вариант не сможет возвратить строку 1 как искомую, хотя она таковой является
 
Разврат :)
PHP:
<?php
/*
 * Продукт защищён авторскими правами 
 * использование стоит десять тысщчь бабок :)
 */
function strpos_by_vladson($string, $find) {
  $array = array(' ', ',', '.'); //знаки припинания
  $pos = stripos($string, $find);
  if (false !== $pos) {
    $before = $pos-1;
    $after = $pos+strlen($find);
    if (array_search($string[$before] , $array) && array_search($string[$after] , $array)) {
      return $pos;
    }
  }
}
?>
 
zerkms, а вы не бойтесь... просто еще раз посмотрите.

и кстати, для использования предложенного мной варианта эффективнее строки хранить сразу с пробелами (разделителями), чтобы не добавлять их каждый раз при проверке...

Ессно, регулярки для большинства случаев много удобнее, практичнее, и вернее. Но бывают разные случаи ;)
 
avm, спасибо, ваш спсоб - именно то, зачем тема и открывалась. знаков припенания в моих фразах не предусмотрено, а значит способ подходит.
к вопросу о приоритете производительности: возможно в рядовой задаче не принципиально использование strpos вместо preg. но у меня обработка идет в сложном цикле, и тысячные доли секунд играют большую роль
 
Сверху