0

SlashCategoryのパーサーを作成しています。これには、文字に基づいて各文字列を分割 (またはトークン化) する必要があります/。私はexplode()うまく機能するPHPの機能を使用しています。たとえば、次のようになります。

Book/Title/Lord Of The Flies/Author/William Golding

そして、次の配列を作成します。

[0] Book
[1] Title
[2] Lord Of The Flies
[3] Author
[4] William Golding

しかし、私には問題があります。explode()スラッシュの前にバックスラッシュがある場合、文字列を分割したくありません。例えば:

Url/Google/http:\/\/www.google.com

以下を含む配列が必要です。

[0] Url
[1] Google
[2] http://www.google.com

いいえ:

[0] Url
[1] Google
[2] http:
[3] 
[4] www.google.com

これどうやってするの?

4

2 に答える 2

4

を使用しますpreg_split( http://php.net/manual/en/function.preg-split.phpを参照)。例:

$input = 'Url/Google/http:\/\/www.google.com';
$output = preg_split('|(?<!\\\)/|', $input); //Yes, thats 3 times a backslash

ここで、データに$outputはエスケープされたスラッシュが含まれているため、次のようにエスケープを解除する必要があります。

$output = preg_split('|(?<!\\\)/|', $input);
array_walk(
    $output,
    function(&$item){
        $item = str_replace('\\/', '/', $item);
    }
);
于 2013-11-14T22:31:18.583 に答える