0

よくある質問のように聞こえるかもしれませんが、このプロセスを理解するのは困難です。だから私はこの文字列を持っています:

http://domain.com/campaign/tgadv?redirect

そして、「tgadv」という単語だけを取得する必要があります。しかし、その単語が「tgadv」であることはわかりません。

また、URL 自体が変更され、次のようになる場合があります。

http://domain.com/campaign/tgadv

また

http://domain.com/campaign/tgadv/

したがって、キャンペーンの後、他の特定の文字の前にある単語を取得する関数を作成する必要があります。それが論理です..唯一確かなことは、その単語がキャンペーン/という単語の後に来ることと、検索している単語の後にある他の文字が特別なものであることです(つまり、/または?)

理解しようとしpreg_matchましたが、実際には良い結果が得られません..

どんな助けでも大歓迎です!

4

5 に答える 5

0
$path = "http://domain.com/campaign/tgadv?redirect";
$url_parts = parse_url($path);
$tgadv = strrchr($url_parts['path'], '/');
于 2013-06-06T09:13:55.803 に答える
0

これを達成するために正規表現は本当に必要ありません。stripos()substr( )を使用して実行できます。

例えば:

$str = '....Your string...';
$offset = stripos($str, 'campaign/');
if ( $offset === false ){
    //error, end of h4 tag wasn't found
}
$offset += strlen('campaign/');
$newStr = substr($str, $offset);

この時点で、$newStr には 'campaign/' の後のすべてのテキストが含まれます。

次に、同様のプロセスを使用して特殊文字の位置を見つけ、substr() を使用して必要な文字列を削除するだけです。

于 2013-06-06T09:14:05.593 に答える
0

この場合、古き良き文字列関数を使用することもできます。正規表現を含める必要はありません。

最初に文字列を見つけて/campaign/、それ以降のすべての部分文字列を取得し ( tgadv/asd/whatever/?redirect)、次/または?文字列の開始後に検索すると、その間のすべてが必要になります ( tgadv)。

于 2013-06-06T09:14:34.127 に答える