2013-09-08 3 views
-2

Есть ли функция, которая позволяет мне найти положение слова в строке? По положению я не имею в виду, какое число char оно находится в строке. Я знаю, что есть много функций, которые делают это уже как strpos() и strstr() и другие. То, что я ищу, - это функция, которая вернет число, которое слово находится в строке относительно количества слов.Найти положение слова в строке?

Так, например, если я ищу «строка» в тексте «Это строка» результат будет 4.

Примечание: Я не заинтересован в расщеплении строку на массив , Мне нужна функция, которая позволяет мне вводить строку как строку, а не как массив. Поэтому ответ здесь Find the exact word position in string - это не то, что я ищу.

+0

Все ли слова, разделенные пробелом? – Lugubrious

+0

Да, все слова разделены пробелом. – user1926567

+0

'Так, например, если я ищу« строку »в тексте« Это строка », результат будет 4.' что это за 4? – itachi

ответ

2

вы coul d do:

function find_word_pos($string, $word) { 
    //case in-sensitive 
    $string = strtolower($string); //make the string lowercase 
    $word = strtolower($word);//make the search string lowercase 
    $exp = explode(" ", $string); 
    if (in_array($word, $exp)) { 
     return array_search($word, $exp) + 1; 
    } 
    return -1; //return -1 if not found 
} 
$str = "This is a string"; 
echo find_word_pos($str, "string"); 
+0

Это сработало. Есть ли способ сделать этот случай чувствительным? т. е. если я ищу «Тест», он должен вернуть совпадение как «Тест», так и «Тест». – user1926567

+0

@ user1926567 Да, вы можете добавить функцию strtolower(), как в обновленном ответе выше –

+0

Еще раз спасибо. Я думал о функции strtolower() Но не хотел бы это преобразовать ее в нижний регистр, а затем искать только для нижнего регистра (т. Е. «Тест»), а не в верхнем регистре (т. Е. «Тест») или он будет искать для обоих? Также есть ли способ связаться с вами? Обсудить проект? – user1926567

1

вы можете explode строку в массив с пространством, как

$arr_str = explode(" ","This is a string") 

и использовать array_search для позиции

echo array_search("string",$arr_str)+1; 

Кроме того, добавить +1, потому что массив начинается с 0

надеюсь, что это будет уверен решить ваша проблема

+0

Спасибо за ответ, однако я пытаюсь сделать это без необходимости разделить строку на массив. – user1926567

+0

welcome @ user1926567, http://stackoverflow.com/questions/7077455/how-to-find-position-of-a-character-in-a-string-in-php использовать этот и PLS, я был бы рад, если вы принимаете мой ответ. – liyakat

Смежные вопросы