[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match_all и регулярное выражение
ola_sh
Добрый день!
У меня на сайт есть поддержка хештегов, для определения хештега в тексте использую функцию preg_match_all, хештеги начинаются со знака # помогите написать регулярное выражение для выдергивания всех хештегов с текста.
Заранее спасибо!


preg_match_all('#????', $text, $result);






Спустя 16 минут, 12 секунд (15.02.2012 - 09:08) Игорь_Vasinsky написал(а):
preg_match_all('/([^\s]#*)/s', $text, $result);

echo '<pre>' . print_r($result, 1) . '</pre>';

Спустя 34 минуты, 4 секунды (15.02.2012 - 09:42) ola_sh написал(а):

$text = 'President Obama has been playing chess #Obama2012';
preg_match_all('/([^\s]#*)/s', $text, $result);
echo '<pre>' . print_r($result, 1) . '</pre>';


Выдает:

Array
(
[0] => Array
(
[0] => P
[1] => r
[2] => e
[3] => s
[4] => i
[5] => d
[6] => e
[7] => n
[8] => t
[9] => O
[10] => b
[11] => a
[12] => m
[13] => a
[14] => h
[15] => a
[16] => s
[17] => b
[18] => e
[19] => e
[20] => n
[21] => p
[22] => l
[23] => a
[24] => y
[25] => i
[26] => n
[27] => g
[28] => c
[29] => h
[30] => e
[31] => s
[32] => s
[33] => #
[34] => O
[35] => b
[36] => a
[37] => m
[38] => a
[39] => 2
[40] => 0
[41] => 1
[42] => 2
)

[1] => Array
(
[0] => P
[1] => r
[2] => e
[3] => s
[4] => i
[5] => d
[6] => e
[7] => n
[8] => t
[9] => O
[10] => b
[11] => a
[12] => m
[13] => a
[14] => h
[15] => a
[16] => s
[17] => b
[18] => e
[19] => e
[20] => n
[21] => p
[22] => l
[23] => a
[24] => y
[25] => i
[26] => n
[27] => g
[28] => c
[29] => h
[30] => e
[31] => s
[32] => s
[33] => #
[34] => O
[35] => b
[36] => a
[37] => m
[38] => a
[39] => 2
[40] => 0
[41] => 1
[42] => 2
)

)

а должен #Obama2012.

Спустя 6 минут, 58 секунд (15.02.2012 - 09:49) Игорь_Vasinsky написал(а):
:D :D :D

а так

preg_match_all('/([^\s]#[\w\d]*)/s', $text, $result);

echo '<pre>' . print_r($result, 1) . '</pre>';

Спустя 5 минут, 37 секунд (15.02.2012 - 09:55) #8bit написал(а):
Помоему ещё проще можно

$text = 'President Obama has been playing chess #Obama2012';
preg_match_all('/(#[^\s]*)/s', $text, $result);
echo '<pre>' . var_dump($result[1]) . '</pre>';

Спустя 16 минут, 10 секунд (15.02.2012 - 10:11) ola_sh написал(а):
о, вот спасибо smile.gif

Спустя 3 часа, 55 минут, 36 секунд (15.02.2012 - 14:06) nugle написал(а):
Игорь_Vasinsky
#8bit
Зачем вы используете модификатор "s", если у вас в регулярных выражениях символа "."?

Спустя 4 часа, 37 минут, 45 секунд (15.02.2012 - 18:44) #8bit написал(а):
Цитата

Зачем вы используете модификатор "s", если у вас в регулярных выражениях символа "."?

Блин точно, че-то даже не вчитался в описание модификатора)

Спустя 21 час, 32 минуты, 28 секунд (16.02.2012 - 16:17) ola_sh написал(а):
тут проблемка smile.gif
функция возвращает все, допустим исходный текст: Barak Obama president of USA #barakobama , вовращает: BarakObamapresidentofUSA#barakobama

а должна #barakobama, как быть?

Спустя 9 минут, 34 секунды (16.02.2012 - 16:26) nugle написал(а):
покажи свой код, потому что у меня все работает

Спустя 25 минут, 51 секунда (16.02.2012 - 16:52) #8bit написал(а):
странно, у меня тоже нормально работает


_____________
С Уважением ola_sh
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.