Следуйте по скрытой ссылке с цепочкой цифр впереди

Я создаю небольшой скрипт ссылки для маскировки, но мне нужно найти каждую из них с другим номером строки, например ( 'mylinkname1'-1597). Кстати: число всегда целое.

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

Вот что я получил сейчас:

$pattern = '/-([0-9]+)/'; 

$v = $_GET['v']

if ($v == 'mylinkname1'.'-'.$pattern) {$link = 'http://example1.com/';}
if ($v == 'mylinkname2'.'-'.$pattern) {$link = 'http://example2.com/';}
if ($v == 'mylinkname3'.'-'.$pattern) {$link = 'http://example3.com/';}

header("Location: $link") ;
exit();
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

здесь вообще нет необходимости в регулярных выражениях, просто разделите строку на дефис и сопоставьте только это, также я рекомендую регистр \ переключатель, когда вы 3 или если \ eleses:

$v=explode('-',$_GET['v']);

switch ($v[0]) {
    case "mylinkname1":
        $link = 'http://example1.com/';
        break;
    case "mylinkname2":
        $link = 'http://example2.com/';
        break;
    case "mylinkname3":
        $link = 'http://example3.com/';
        break;
    default:
        echo "something not right";
}

header("Location: $link") ;
exit();
Ответ принят как подходящий

Тире уже есть в шаблоне, поэтому вам не нужно добавлять его в предложение if.

Вы можете опустить группу захвата вокруг цифр -[0-9]+, и вы должны использовать шаблон с preg_match.

Вы можете изменить формат операторов if на:

$pattern = '-[0-9]+';

if (preg_match("/mylinkname1$pattern/", $v)) {$link = 'http://example1.com/';}

Чтобы mylinkname1-1597 не было частью более крупного слова, вы можете окружить шаблон якорями ^ и $, чтобы утвердить начало и конец строки или границы слова \b

Не уверен, если вы имеете в виду это: $pattern = '^-[0-9]+$\b'; ?

bpy 28.05.2019 00:25

@ Алекс Вы можете использовать либо preg_match("/^mylinkname1$pattern$/", $v), либо preg_match("/\bmylinkname1$pattern\b/", $v)

The fourth bird 28.05.2019 00:32

Другие вопросы по теме