удалить только первые косые черты из URL / строки

Я хочу удалить первые две косые черты моей строки.

//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:// перед этими URL.

Может быть, кто-то знает умное решение.

Спасибо.

0

Решение

Другой вариант — использовать для этого регулярное выражение:

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

Вот скрипка regex101:
https://regex101.com/r/lUXTDf/1

И это использование в php с использованием preg_replace:

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

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

0

Другие решения

Надеюсь, что это то, что вы ищете.

$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
1

Сильный способ заключается в использовании 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);

демонстрация

0

Вы можете использовать функцию разнесения:

<?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

-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, '/');
?>
-1
По вопросам рекламы [email protected]