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')

现在我想用' http://mydomain.com '替换 $filename 之前的所有内容,我的代码在上面,但它不起作用。

谢谢!

4

6 回答 6

2
$foo = explode($filename, $image);
echo $foo[0];

爆炸“拆分”一个给定的参数(在您的情况下为 $filename )。它返回一个数组,其中键在您提供的字符串上被拆分。

如果您只想更改网址。你使用 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 回答
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 回答
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 回答