Like2beMike
@Like2beMike

Как сделать регулярку PHP для удаления определенного текста?

Создаю команду для получения айди пользователя по ссылке на странице, есть три случая:
1. https://vk.com/none
2. https://vk.com/id123
3. @none
В первом случае регулярка должна оставить только none.
Во втором все тоже самое что и в первом, обрезаем до id123.
В третьем случае ничего не должно удаляться.
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Достаточно замены через str_replace
$newStr = str_replace('https://vk.com/', '', $str);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!
<?php
$a = 'https://vk.com/none';
$b = 'https://vk.com/id123';
$c = 'https://vk.com/id123456?a=b';
$d = '@none';
$e = 'some text';

function getUserId($link)
{
    if (preg_match('/vk.com\/(?<id>[\w\d]+)/ui', $link, $m) && !empty($m['id'])) return $m['id'];
    if (preg_match('/(?<uid>@[\w\d]+)/ui', $link, $m) && !empty($m['uid'])) return $m['uid'];
    return false;
}

var_dump(getUserId($a));
var_dump(getUserId($b));
var_dump(getUserId($c));
var_dump(getUserId($d));
var_dump(getUserId($e));

//string(4) "none"
//string(5) "id123"
//string(8) "id123456"
//string(5) "@none"
//bool(false)
Ответ написан
Комментировать
@alexanderzanin
$string = 'https://vk.com/none';

function find(string $str) {
    $result = '';
    if (preg_match('/^https:\/\/vk.com\//', $str)) {
        $result = substr($str, 15);
    } else {
        $result = $str;
    }

    return $result;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы