Следуйте по скрытой ссылке с цепочкой цифр на передний план - PullRequest
0 голосов
/ 28 мая 2019

Я создаю небольшой скрипт для маскировки, но мне нужно найти каждый из них с различным номером строки, например ('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();

Ответы [ 2 ]

1 голос
/ 28 мая 2019

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

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

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

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

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

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

0 голосов
/ 28 мая 2019

здесь вообще нет необходимости в регулярных выражениях, просто разбейте строку на дефис и сопоставьте только это, также я рекомендую регистр \ switch, когда вы 3 или if \ 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...