2012-04-12 6 views
1

これまでに答えが出ているかどうかわかりません - 2つのキーワードの間で文字列を取得するにはどうすればよいですか?PHPで2つのキーワードの間で文字列を取得する方法

たとえば、「ストーリー」と「」の間の文字列は、」、私はちょうどたい

http://mywebsie.com/hello/blog/story/archieve/2012/5/?page=1  
http://mywebsie.com/blog/story/archieve/2012/4/?page=1 
http://mywebsie.com/blog/story/archieve/2012/?page=4 

story/archieve/2012/5/ 
story/archieve/2012/4/ 
story/archieve/2012/ 

編集:私はparse_url

$string = parse_url('http://mywebsie.com/blog/story/archieve/2012/4/?page=1'); 
echo $string_uri['path']; 

を使用する場合は

私が得る、

/blog/story/archieve/2012/4/ 

が、私は 'ブログ/'

+0

結果を明確にするために、最初のキーワードを含めて2番目のキーワードを除外しますか? –

+0

2番目のキーワードではなく最初のキーワードを含めるだけです...申し訳ありませんが、これはあまり良い考えではありません... – laukok

+1

答えが追加されました、それが合っているかどうかを見てください:) –

答えて

0

あなたが探している部分文字列が入力文字列に正確に一度起こると仮定しても安全である場合:

function getInBetween($string, $from, $to) { 
    $fromAt = strpos($string, $from); 
    $fromTo = strpos($string, $to); 

    // if the upper limit is found before the lower 
    if($fromTo < $fromAt) return false; 

    // if the lower limit is not found, include everything from 0th 
    // you may modify this to just return false 
    if($fromAt === false) $fromAt = 0; 

    // if the upper limit is not found, include everything up to the end of string 
    if($fromTo === false) $fromTo = strlen($string); 

    return substr($string, $fromAt, $fromTo - $fromAt); 
} 

echo getInBetween("http://mywebsie.com/hello/blog/story/archieve/2012/5/?page=1", "story", '?'); // story/archieve/2012/5/ 
+0

答えに感謝します。私はこのエラーを受け取りました 'Parse error:構文エラー、予期しないT_IF in ...'がこの行を参照しています - if($ fromTo === false)$ fromTo = strlen($ string); ' – laukok

+0

@lauthiamkok ups .. edited –

+0

fantastic!それは今完璧に動作します。おかげでニフティ! :-) – laukok

1

使用parse_url()を含める必要はありません。

http://php.net/manual/en/function.parse-url.php

$parts = parse_url('http://mywebsie.com/story/archieve/2012/4/?page=1'); 
echo $parts['path']; 

あなたはexplode()を使用することもできますし、そこから必要なものは何でも。

+0

答えに感謝します。私の編集を見てください。ありがとう! – laukok

+0

@lauthiamkok、右、 'explode($ parts ['path']、 '/'、2)'などを使うことができます。必要に応じてパスを分割します。ありがとうbrad。 – Brad

+0

'explode($ parts ['path']、 '/'、2)'は修正箇所を対象にしています。もし私が何か "blog /"の前に "hello/blog /"のようなものがあればどうなりますか? – laukok

2

私たちはいつでも呼び出すことができる簡単な関数を作成することができているもう一つの非常に単純な方法。

<?php 
    // Create the Function to get the string 
    function GetStringBetween ($string, $start, $finish) { 
    $string = " ".$string; 
    $position = strpos($string, $start); 
    if ($position == 0) return ""; 
    $position += strlen($start); 
    $length = strpos($string, $finish, $position) - $position; 
    return substr($string, $position, $length); 
    } 
?> 

、ここでは詳細については、あなたの質問

$string1="http://mywebsie.com/hello/blog/story/archieve/2012/5/?page=1";  
$string2="http://mywebsie.com/blog/story/archieve/2012/4/?page=1"; 
$string3="http://mywebsie.com/blog/story/archieve/2012/?page=4"; 

echo GetStringBetween ($string1, "/blog/", "?page"); 
//result : story/archieve/2012/5/ 

echo GetStringBetween ($string2, "/blog/", "?page"); 
//result : story/archieve/2012/4/ 

echo GetStringBetween ($string3, "/blog/", "?page"); 
//result : story/archieve/2012/ 

のための使用例ですhttp://codetutorial.com/howto/how-to-get-of-everything-string-between-two-tag-or-two-stringsをお読みください。

関連する問題