Просто хочу знать, как я могу отфильтровать результат с помощью mysql, если поле «контент» содержит хэштег.
например Если результат будет таким: «# Euro2012 будет отличным»
Я бы не вернул это в моих результатах MySQL ....
заранее спасибо
Просто хочу знать, как я могу отфильтровать результат с помощью mysql, если поле «контент» содержит хэштег.
например Если результат будет таким: «# Euro2012 будет отличным»
Я бы не вернул это в моих результатах MySQL ....
заранее спасибо
Для полей varchar вы можете использовать LIKE:
SELECT * FROM myTable WHERE myVarCharField NOT LIKE '%#Euro2012%'
Для текстовых полей вам необходимо изучить полнотекстовый поиск.
Обновление (предложено в комментариях):
Решение с регулярным выражением:
SELECT * FROM myTable WHERE myVarCharField NOT RLIKE '#.*\s'
Если вы хотите выполнить фильтрацию по полям, которые начинаются с хэштега, добавьте ^
к регулярному выражению.
RLIKE
.
- person Rocket Hazmat; 10.05.2012
NOT LIKE
- person sreimer; 10.05.2012
#.*\s?
- person Mike B; 10.05.2012
Используя regex
и preg_match_all()
, у вас может получиться что-то вроде этого:
$str = <<<STR
this is a string
with a #tag and
another #hello one
STR;
$matches = array();
if (preg_match_all('/#([^\s]+)/', $str, $matches)) {
var_dump($matches[1]);
}
Что дает следующий результат:
array
0 => string 'tag' (length=3)
1 => string 'hello' (length=5)
И, если вам нужно проделать с ними немного больше манипуляций, вам следует взглянуть на раздел руководства по функциям PCRE: есть и другие, которые могут вам помочь.