0

私は次の2つの文字列を持っています:

$str='http://website.com/abc/?var=abc';
$str='http://website.com/abc/?xvar=123&var=xyz';

PHPを使用して「?var =」または「&var=」の前に$strをすべてに変更したいと思います。

たとえば、2つの例を考えると、$strは次のように変換されます。

$str='http://website.com/abc/';
$str='http://website.com/abc/?abc=123';

ありがとうございました

以下のソリューションがテストされました。

<?php
    $str='http://website.com';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');
    $str='http://website.com/';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');
    $str='http://website.com/abc';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');
    $str='http://website.com/abc/';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');
    $str='http://website.com/abc/?var=abc';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');
    $str='http://website.com/abc/?xvar=123&var=xyz';
    echo('string-'.$str.'<br>');
    echo('opt1-'.opt1($str).'<br>');
    echo('opt2-'.opt2($str).'<br>');

function opt1($str) {
    return preg_replace('/[?&]var=.*$/', '', $str);
}
function opt2($str) {
    preg_match('/(.*)[\?\&]var=/',$str2,$m);
    return $m[1];
}

?>
4

3 に答える 3

0

$str='http://website.com/abc/?xvar=123';2番目の例で、これが機能すると仮定します。

preg_match('/(.*)[\?\&]var=/',$str2,$m);
echo $m[1];
于 2012-11-27T01:25:51.833 に答える
0

strstrを使用して、、の前の文字列を取得できます?var

$str = strstr($str, "?var=", true);
echo str; //outputs - http://website.com/abc/
//Similarly for the other needle
$str = strstr($str, "&var=", true);
echo $str; //outputs - http://website.com/abc/?abc=123
于 2012-11-27T01:25:54.753 に答える
0
$str = preg_replace('/[?&]var=.*$/', '', $str);
于 2012-11-27T01:26:29.590 に答える