在字符串前替换字符串?

时间:2013-03-15 09:31:11

标签: php preg-replace

抱歉,我的英语不好。我现在要发布我的代码:

    $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之前的所有代码,我的代码在上面,但它不起作用。

谢谢!

6 个答案:

答案 0 :(得分: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>';   

答案 1 :(得分:2)

还有另一种方法,你不需要正则表达式:

简称:

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

说明:

如果你只想要没有网址或目录路径的文件名,basename()就是你的朋友;

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

输出:thisisimage.gif

然后你可以添加你想要的任何域名:

$mydomain = "http://mydomain.com/";
$url = $mydomain.$filename;

答案 2 :(得分:1)

试试这个:

$image = 'http://example.com/thisisimage.gif';  
echo preg_replace('/^http:\/\/.*\.com/', 'http://mydomain.com',$image);

答案 3 :(得分:1)

这里的其他人已经给出了关于如何做到这一点的好答案 - 正则表达式有其优点但也有缺点 - 它的速度较慢,分别需要更多的资源,对于简单的事情,我会建议你使用爆炸方法,但是在为正则表达式函数说话时,你也可以试试这个,而不是你的preg_replace:

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

PHP中似乎不支持可变长度的positve lookbehind。

答案 4 :(得分: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>';    

答案 5 :(得分:1)

如果您只想在文件名之前添加自己的域名,请尝试以下方法:

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

如果您只想更换域名,请尝试以下方法:

echo preg_replace('/.*?[^\/]\/(?!\/)/', 'http://mydomain.com/', $image);