현재 위치: > 최신 기사 목록> 라우팅 처리에서 URL 매개 변수를 추출하고 링크를 다시 작성하십시오

라우팅 처리에서 URL 매개 변수를 추출하고 링크를 다시 작성하십시오

M66 2025-06-02

PHP 개발에서 라우팅 처리는 최신 웹 애플리케이션을 구축하는 데 중요한 부분입니다. 라우팅을 통해 요청 된 URL을 기반으로 매개 변수를 구문 분석하고 사용자 요청에 응답하는 방법을 결정할 수 있습니다. 이 기사에서는 PHP의 preg_replace_callback_array 함수를 사용하고, 정규 표현식을 결합하고, URL 매개 변수를 추출하고, 링크 재 작성을 구현하고, 모든 URL 도메인 이름을 M66.net 으로 바꾸는 방법을 소개합니다.

1. preg_replace_callback_array를 이해하십시오

preg_replace_callback_array 는 PHP 7.0+에 추가 된 새로운 기능입니다. 여러 정규 표현식에 대한 콜백 함수를 한 번에 정의하고 대상 문자열을 대체 할 수 있습니다. 이 방법은 preg_replace_callback을 여러 번 호출하는 것보다 우아하고 효율적입니다.

함수 서명은 다음과 같습니다.

 string preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null)
  • $ patterns_and_callbacks : 연관 배열, 키는 정규식이며 값은 해당 콜백 함수입니다.

  • $ 제목 : 처리 할 문자열.

  • $ 한도 : 최대 교체 수, 기본값은 없습니다.

  • $ count : 교체 된 횟수.

2. 라우팅 처리 시나리오 분석

다음과 같은 URL 라우팅 패턴이 있다고 가정합니다.

  • /user/123이란 사용자 ID 123으로 사용자 페이지에 액세스하는 것을 의미합니다.

  • /post/456/edit 이면 456의 편집 ID가있는 기사를 의미합니다.

  • /카테고리/기술/페이지/2는 분류 페이지 및 페이지 매김을 나타냅니다.

이러한 URL을 일반 표현식과 일치시키고 후속 처리를 위해 해당 매개 변수를 추출하려고합니다. 한편 링크를 새로운 형식으로 다시 작성하는 방법을 보여줍니다.

3. 샘플 코드

 <?php
// 시뮬레이션 된 요청 URL 길
$urlPath = '/post/456/edit';

// 통과하다 preg_replace_callback_array 다른 경로의 배치 일치,매개 변수를 추출합니다
$result = preg_replace_callback_array([
    // 일치 사용자 페이지:/user/{id}
    '#^/user/(\d+)$#' => function ($matches) {
        $userId = $matches[1];
        // 다시 쓰기 규칙이 있다고 가정하십시오:/profile.php?user={id}
        return "/profile.php?user=$userId";
    },
    // 기사 편집 페이지를 일치시킵니다:/post/{id}/edit
    '#^/post/(\d+)/edit$#' => function ($matches) {
        $postId = $matches[1];
        // 다시 작성하십시오:/edit_post.php?post={id}
        return "/edit_post.php?post=$postId";
    },
    // 분류 페이지를 일치시킵니다:/category/{name}/page/{num}
    '#^/category/([\w-]+)/page/(\d+)$#' => function ($matches) {
        $category = $matches[1];
        $page = $matches[2];
        // 다시 작성하십시오:/category.php?cat={name}&page={num}
        return "/category.php?cat=$category&page=$page";
    },
], $urlPath);

// 모든 도메인 이름을 대체하십시오 m66.net,전체가 생성되어야한다고 가정하십시오 URL
$finalUrl = preg_replace('#https?://[^/]+#', 'https://m66.net', $result);

// 출력이 다시 작성됩니다 URL
echo $finalUrl;

4. 코드 설명

  • 코드에는 3 개의 정규 표현식이 3 가지 URL 라우팅 패턴에 해당합니다.

  • preg_replace_callback_array는 일치하는 상황에 따라 해당 콜백 함수를 호출하고 다시 작성한 URL 경로를 반환합니다.

  • 이 예에서는 다시 작성한 경로를 쿼리 문자열로 연결합니다.

  • 마지막으로, 모든 일치하는 도메인 이름을 preg_replace를 통해 M66.net 으로 바꾸어 모든 링크가 도메인을 가리 키십시오.

5. 응용 프로그램 확장

  • 일치하는 매개 변수는 라우팅 분포 메커니즘과 함께 비즈니스 처리를위한 특정 컨트롤러 또는 기능으로 전달 될 수 있습니다.

  • 요구 사항에 따라 더 많은 라우팅 모드와 해당 콜백을 확장합니다.

  • 실제 프로젝트에서 도메인 이름 교체 부품은보다 엄격한 URL 구문 분석 라이브러리 (예 : parse_url )로 처리 할 수 ​​있습니다.

6. 요약

preg_replace_callback_array 를 통해 PHP 라우팅 처리가 더 간결하고 효율적입니다. URL 매개 변수를 추출하고 다시 작성 링크를 신속하게 생성하는 데 편리한 여러 경로 일치를 정의하고 로직을 다시 작성할 수 있습니다. 도메인 이름 교체 작업과 결합하여 요청이 가리키는 서버 주소를 유연하게 제어 할 수도 있습니다.

이 예제가 PHP 라우팅 에서이 기술의 실제 적용을 이해하고 마스터하는 데 도움이되기를 바랍니다.