Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск обычной подстроки через preg_match_all 
V
    Опции темы
supercelt
Дата 9.2.2013, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Код

$content = 'some1 some2 some1 some3 some4';


Код

$string = some1


Нужно найти some1 и указать сколько раз нашлось. Для простого поиска по заданной строке можно было бы применить обычные строковые ф-ии, но стоит задача сделать это через preg_match_all. 
Код

$count = preg_match_all('"'.$string.'"', $content, $found);

При выполнении этой ф-ии всё находит и пишет что нашёл 2 раза. Но почему-то если в $string пусто, но сама переменная есть, то $count буде 42, а если в $string прописать точку, то $count будет 38. Хотя при этом всё должно быть по 0. Что надо поменять?
PM   Вверх
Arantir
Дата 9.2.2013, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(supercelt @  9.2.2013,  16:30 Найти цитируемый пост)
Но почему-то если в $string пусто, но сама переменная есть, то $count буде 42, а если в $string прописать точку, то $count будет 38. Хотя при этом всё должно быть по 0.

Чего, чего должно?

1. Сколько по вашему пустых строк (которые между символами) в вашей сроке?
2. Читаем про регулярные выражения, именно которыми preg_match_all и оперирует, точка означает "любой символ".

Хотя, все равно странно, ведь должно быть 30 и 29 соответственно, для приведенной вами строки. Но не ноль, это точно.

Цитата(supercelt @  9.2.2013,  16:30 Найти цитируемый пост)
 Что надо поменять? 
А что вы хотите в последствии получить? Судя из ваших слов, вам надо подстроку искать, а не пустые строки и все подряд символы.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
supercelt
Дата 9.2.2013, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Хорошо, я всё понял. Тогда помогите сообразить как найти подстроку в строке и сколько раз встречалась подстрока. Есть что б одной функцией как-нибудь?
PM   Вверх
Arantir
Дата 10.2.2013, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Ну так у вас и так одной функцией. В $count количество, в $found подстроки.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
supercelt
Дата 10.2.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Не, получается что эта фуекция не подходит, так как она работает с регулярками. Я имею ввиду что-то вроде strpos, что бы туда в что ищем - забивать конкретный пример строки и что бы функция искала эту строку по тексту и выводила сколько раз нашла.
PM   Вверх
Arantir
Дата 10.2.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(supercelt @  10.2.2013,  13:38 Найти цитируемый пост)
Не, получается что эта фуекция не подходит, так как она работает с регулярками. 
Ну я то ориентировал на ваши же слова:
Цитата(supercelt @  9.2.2013,  16:30 Найти цитируемый пост)
но стоит задача сделать это через preg_match_all. 


Цитата(supercelt @  10.2.2013,  13:38 Найти цитируемый пост)
Я имею ввиду что-то вроде strpos, что бы туда в что ищем - забивать конкретный пример строки и что бы функция искала эту строку по тексту и выводила сколько раз нашла. 
К счастью, как раз такая функция существует http://www.php.net/manual/ru/function.substr-count.php


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
supercelt
Дата 10.2.2013, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Спасибо я вот как раз уже её и нашёл
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.