0

我想删除字符串的前两个斜杠。

//cdn.klingel.de/images/100/3/7/1/5/0/8/371508F1.jpg

之后我想包括http://新的。但这不是问题。

str_replace替换所有斜线...

信息:

我有不同的字符串。例子:

/media/images/CmsPageModuleDataItem/62/6260.0_gefro-suppennudeln.jpg

//cdn.abc.de/images/100/3/7/1/5/0/8/371508F1.jpg

http://s7.abc.com/is/image/LandsEnd/461469_FG16_LF_616

我需要http://在这些网址前面正确。

也许有人知道一个聪明的解决方案。

谢谢你。

4

5 回答 5

1

希望这就是你要找的。

$str = "//Hello World/theEnd!";
echo $str . "<br>";
$str = trim($str,"/");
$str = "http://" . $str; 
echo $str;

给你http://Hello World/theEnd!

如果你想变得花哨,你也可以把它作为一个循环。

function addhttp($url) {
$url = trim($url,"/");

if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
    $url = "http://" . $url;
}
return $url;

}

$add = "/media/images/CmsPageModuleDataItem/62/6260.0_gefro-suppennudeln.jpg";
$add1 = "//cdn.abc.de/images/100/3/7/1/5/0/8/371508F1.jpg";
$add2 = "http://s7.abc.com/is/image/LandsEnd/461469_FG16_LF_616";
echo "<br />"; 

echo addhttp($add); 
echo "<br />"; 
echo addhttp($add1); 
echo "<br />"; 
echo addhttp($add2); 

这给了你

http://media/images/CmsPageModuleDataItem/62/6260.0_gefro-suppennudeln.jpg
http://cdn.abc.de/images/100/3/7/1/5/0/8/371508F1.jpg
http://s7.abc.com/is/image/LandsEnd/461469_FG16_LF_616
于 2017-01-13T14:23:49.360 回答
0

一个强有力的方法是部分使用parse_url和重建 url:

$urls = [
    '/media/images/CmsPageModuleDataItem/62/6260.0_gefro-suppennudeln.jpg',
    '//cdn.abc.de/images/100/3/7/1/5/0/8/371508F1.jpg',
    'http://s7.abc.com/is/image/LandsEnd/461469_FG16_LF_616',
    'toto',
    'example.com/path?a=1&b=2#anchor'
];

$results = [];

define ('DEFAULT_SCHEME', 'http');
define ('DEFAULT_HOST', 'default.host.com');

foreach ($urls as $url) {
   $parts = parse_url($url);

   $results[] = (isset($parts['scheme']) ? $parts['scheme'] : DEFAULT_SCHEME) . '://'
              . (isset($parts['host'])? $parts['host'] : DEFAULT_HOST)
              . '/' . ltrim($parts['path'], '/')
              . (isset($parts['query']) ? '?' . $parts['query'] : '')
              . (isset($parts['fragment']) ? '#' . $parts['fragment'] : '');
}

print_r($results);

演示

于 2017-01-13T14:19:48.997 回答
0

另一种选择是为此使用正则表达式:

^((http:)?(\/){1,2}).*

这是一个 regex101 小提琴:
https ://regex101.com/r/lUXTDf/1

这是使用 preg_replace 在 php 中的用法:

var_dump(preg_replace('/^(?:(?:http:)?(?:\/){1,2})(.*)/', 'http://\1', $s1));

http://sandbox.onlinephpfunctions.com/code/b49af5519e8a7a4e47baffa9a8a7199c3bddbd42

于 2017-01-13T14:32:43.243 回答
-1

您可以使用爆炸功能:

<?php
    $str = "//cdn.klingel.de/images/100/3/7/1/5/0/8/371508F1.jpg";
    $array= explode("/",$str);
?>

然后你可以做一个forloop把数组放回一个字符串。

http://www.w3schools.com/php/func_string_explode.asp

于 2017-01-13T14:23:42.647 回答
-1

@cgee 使用 ltrim() 函数它将修剪左侧意味着您开始字符串的/或//两者都只是看看尝试下面的

<?php
    $preString = "http://";
    $s1 = "/media/images/CmsPageModuleDataItem/62/6260.0_gefro-suppennudeln.jpg";
    $s2 = "//cdn.abc.de/images/100/3/7/1/5/0/8/371508F1.jpg";
    echo $preString.ltrim($s1, '/');
    echo "<br>";
    echo $preString.ltrim($s2, '/');
?>
于 2017-01-13T14:33:47.133 回答