удаляя "?" только в определенном подкаталоге str_replace - PullRequest
0 голосов
/ 06 апреля 2019

Приведенная ниже функция заменяет символы и & и ?, но для ? я хочу, чтобы замена выполнялась только в подкаталоге example.com/forum/

public static function clean($sUrl)
    {
        return str_replace([' ', '&', '?'], ['%20', '&', ''], $sUrl);
    }

пример:

https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit?/24

до

https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit/24

Вот код, который делает URL форума:

<a href="{{ $design->url('forum', 'forum', 'post', "$topic->name,$topic->forumId,$topic->title,$topic->topicId") }}">

1 Ответ

0 голосов
/ 06 апреля 2019

Вам нужно сопоставить строку URL, чтобы проверить, присутствует ли в URL подкаталог forum, используя preg_match () .Позже вы можете использовать str_replace () для удаления ? из вашего URL.

<?php 

function removeQuestionMarks($URL){
    if(preg_match('/^http(s)?:\/\/example\.com\/forum\/.*$/',$URL) === 1){
        $URL = trim($URL);
        $URL = str_replace("?","",$URL);
    }

    return str_replace([' ', '&'],['%20', '&amp;'],$URL);
}

echo removeQuestionMarks('https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit?/24'),PHP_EOL;

echo removeQuestionMarks('https://example.com/forum/ why? is it difficult?/877');

Демо: https://3v4l.org/FXDml

Обратите внимание, что Я не использовал urlencode(), поскольку он также преобразовывал бы другие символы в URL, что нежелательно в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...