在php中使用正则表达式更改url模式

时间:2013-06-27 02:48:15

标签: php regex url

我想我在PHP上完全是noobie。

我正在尝试将网址格式更改为其他格式

来自

http://da.feedsportal.com/c/34762/f/640634/s/2dd0817c/l/0L0Sexample0Bco0Bkr0Carti0Cpolitics0Cassembly0C5933970Bhtml/ia1.htm

http://www.example.co.kr/arti/politics/assembly/593397.html

所以我只从原始网址中取“example0Bco0Bkr0Carti0Cpolitics0Cassembly0C5933970Bhtml”并稍微调整一下'0B' - > ''和'0C' - > '/'

其他部分如da.feedsportal.com/c/34762/f/640634/s/2dd0817c/l/0L0S和/ia1.htm将被删除。

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

只需使用urlencode

即可
echo urlencode("http://www.example.co.kr/arti/politics/assembly/593397.html");
//=> http%3A%2F%2Fwww.example.co.kr%2Farti%2Fpolitics%2Fassembly%2F593397.html

然后你不必自己写

答案 1 :(得分:0)

使用 strpos strrpos substr str_replace 。我将在4个主要步骤中采取它。查找子字符串的开始和结束。一点验证。抓住子串。转换子字符串。

Basicly:

function convert ($inputString) {
    $start = strpos( $inputString, '0L0S' );
    $end = strrpos( $inputString, '/' );

    if(! $start){
        return false;
    }

    $start = $start + 4; // this is because strpos gives start of found string
    $length = $end - $start;
    $innerString = substr( $inputString, $start, $length);

    $pass1 = str_replace ('0B', '.', $innerString);
    $pass2 = str_replace ('0C', '/', $pass1);

    return $pass2;
}

我确信有一种奇特的方式可以做到这一点。但这应该有用。