Задать вопрос
@AleDv

Как с помощью регулярок отлавливать ссылки в Вконтакте?

Здравствуйте, друзья. Есть текст поста во Вконтакте:

Примерный текст, примерный текст, примерный текст, примерный текст. [id123456|Пользователь].

Ещё текст, примерный текст, примерный текст, примерный текст, примерный текст [club987654321|Сообщество] , примерный текст, примерный текст, примерный текст.


Из этого текста мне нужно вычленить две ссылки:
id123456|Пользователь,
club987654321|Сообщество.

С помощью кода preg_match_all('/\[(.+)\]/',$text,$found); получить желаемого не получилось.

Прошу помощи: как переделать регулярку, чтобы получить все ссылки из поста. Наверняка я где-то допустил нелепую ошибку.

Благодарю за помощь.
  • Вопрос задан
  • 244 просмотра
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
@Beltoev
Живу в своё удовольствие
Вообще регулярка рабочая: вычленяет то, что вам и нужно ( https://regex101.com/r/yS7wI4/1 )

Подозреваю, что не так используете функцию preg_match_all.

UPD:
Такая регулярка даже точнее может искать: \[((?:id|club)\d+)[|](.*)\]
( https://regex101.com/r/gS7xQ0/1 )

UPD:
Новая регулярка: \[((?:id|club)\d+)[|]([^]]*)\]
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
#id([0-9]+)#i
#club([0-9]+)#i
Ответ написан
Комментировать
@bashkarev
/(?<type>id|club)(?<id>\d+)\|(?<name>\W+)/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽