0

すみません、私は英語が下手です。私は今私のコードを投稿するつもりです:

    $image = 'http://example.com/thisisimage.gif';
    $filename = substr($image, strrpos($image, '/') + 1);
    echo '<br>';
    echo $filename;
    echo '<br>';            
    echo preg_replace('/^[^\/]+/', 'http://mydomain.com', $image);   
    echo '<br>';    

$image は文字列です。

$filename は画像名です (上記の例では、「thisisimage.gif」が返されます)

$filename の前のすべてを ' http://mydomain.com 'に置き換えたいのですが、コードは上にありますが、機能しません。

ありがとう!

4

6 に答える 6

2

正規表現を必要としない別のアプローチがあります。

要するに:

$image = 'http://example.com/thisisimage.gif';
$url = "http://mydomain.com/".basename($image);

説明:

URLやディレクトリパスを含まないファイル名が必要な場合basename()は、友達です。

$image = 'http://example.com/thisisimage.gif';
$filename = basename($image);

出力:thisisimage.gif

次に、必要なドメインを追加できます。

$mydomain = "http://mydomain.com/";
$url = $mydomain.$filename;
于 2013-03-15T09:37:41.303 に答える
2
$foo = explode($filename, $image);
echo $foo[0];

指定されたパラメータ(この場合は$ filename)の1つを「分割」します。指定した文字列でキーが分割されている配列を返します。

また、URLを変更したいだけの場合。str_replaceを使用します

   $foo = str_replace("http://example.com", "http://localhost", $image);

   //This will change "http://example.com" to "http://localhost", like a text replace in notepad.

あなたの場合:

    $image = 'http://example.com/thisisimage.gif';
    $filename = substr($image, strrpos($image, '/') + 1);
    $foo = explode($filename, $image);
    echo '<br>';
    echo $filename;
    echo '<br>';            
    echo str_replace($foo[0], "http://yourdomain.com/", $url);
    echo '<br>';   
于 2013-03-15T09:33:10.327 に答える
1

これを試して :

$image = 'http://example.com/thisisimage.gif';  
echo preg_replace('/^http:\/\/.*\.com/', 'http://mydomain.com',$image);
于 2013-03-15T09:35:43.220 に答える
1

ここにいる他の人々はそれを行う方法について良い答えを出しています - 正規表現には利点がありますが、欠点もあります - 遅く、それぞれより多くのリソースが必要です。 preg_replace の代わりにこれを試すこともできます。

echo preg_replace('#(?:.*?)/([^/]+)$#i', 'http://localhost/$1', $image);

可変長の正の後読みは PHP ではサポートされていないようです。

于 2013-03-15T09:41:33.377 に答える
1

これは単純に機能するはずです:

$image = 'http://example.com/thisisimage.gif';
$filename = substr($image, strrpos($image, '/') + 1);
echo '<br>';
echo $filename;
echo '<br>';            
echo 'http://mydomain.com/'.$filename;   
echo '<br>';    
于 2013-03-15T09:42:02.123 に答える
1

ファイル名の前に独自のドメインを追加したい場合は、これを試してください。

$filename = array_pop(explode("/", $image));
echo "http://mydomain.com/" . $filename;

ドメインのみを置き換えたい場合は、これを試してください:

echo preg_replace('/.*?[^\/]\/(?!\/)/', 'http://mydomain.com/', $image);
于 2013-03-15T09:43:36.970 に答える