programing

PHP 사용 URL SPACE를 %20으로 바꾸기

telebox 2023. 7. 31. 21:19
반응형

PHP 사용 URL SPACE를 %20으로 바꾸기

URL의 모든 공백 인스턴스를 %20으로 바꾸려고 합니다.정규식을 어떻게 하죠?

감사해요!

문자열을 다른 문자열로 바꾸려면 정규식을 사용할 필요가 없습니다. 사용하는 것만으로도 충분합니다.

$new = str_replace(' ', '%20', $your_string);


하지만, 당신이 그것보다 조금 더 많은 것을 원한다면, 그리고 아마도 당신이 URL로 작업하고 있다면, 당신은 그 기능을 살펴봐야 합니다.

저는 당신의 목적을 위해 urlencode() 대신 rawurlencode()를 사용해야 한다고 생각합니다.

견본을 만들다

$image = 'some images.jpg';
$url   = 'http://example.com/'

urlencode($str)를 사용하면 결과가 발생합니다.

echo $url.urlencode($image); //http://example.com/some+images.jpg

%20으로 전혀 변경되지 않습니다.

하지만 rawurlencode(이미지))를 사용하면 생성됩니다.

echo $url.rawurlencode(basename($image)); //http://example.com/some%20images.jpg

자신의 것을 구현하려고 하지 말고 사용하십시오.게으름 피우다.

이 작업을 수행하는 방법에는 다음과 같은 여러 가지 옵션이 있습니다.

  • urlencode() 또는 - http 프로토콜의 URL을 인코딩하도록 설계된 함수
  • str_replace() "중장비" 문자열 교체
  • strtr() 보다 더 나은 성능을 제공할 것입니다.str_replace()여러 문자를 바꿀 때
  • preg_replace() 정규식 사용(호환성이 거의 없음)

strtr()

교체를 원할 경우"\t"그리고." "와 함께"%20":

$replace_pairs = array(
  "\t" => '%20',
  " " => '%20',
);
return strtr( $text, $replace_pairs)

preg_replace()

여기서는 공간만 대체하거나 선택의 여지가 거의 없습니다.~ ~다시 공백 및 탭 바꾸기~[ \t]~또는 모든 종류의 공간. ~\s~:

return preg_replace( '~\s~', '%20', $text);

또는 문자열을 이렇게 교체해야 할 때"\t \t \t \t"단 하나로%20:

return preg_replace( '~\s+~', '%20', $text);

저는 당신이 정말로 수동 문자열 교체를 사용하고 깨지지 않는 공간과 같은 더 많은 유형의 공백을 처리하고 싶어한다고 가정했습니다. )

    public static function normalizeUrl(string $url) {
        $parts = parse_url($url);
        return $parts['scheme'] .
            '://' .
            $parts['host'] .
            implode('/', array_map('rawurlencode', explode('/', $parts['path'])));

    }
$result = preg_replace('/ /', '%20', 'your string here');

또한 사용을 고려할 수도 있습니다.

$result = urlencode($yourstring)

다른 특별한 등장인물들로부터도 탈출하기 위해.

언급URL : https://stackoverflow.com/questions/9240556/using-php-replace-spaces-in-urls-with-20

반응형