2017-01-13 3 views
0

Ich möchte die ersten zwei Schrägstriche meiner Zeichenfolge löschen.löschen nur erste Schrägstriche von URL/String

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

Danach möchte ich die http:// neu aufzunehmen. Aber das ist nicht das Problem.

str_replace ersetzen alle Schrägstriche ...

Info:

Ich habe verschiedene Saiten. Beispiele:

/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 

Ich brauche einen richtigen http:// vor diesen Urls.

Vielleicht kann jemand eine kluge Lösung kennen.

Vielen Dank.

+0

benutze 'substr ($ string, int $ start, [int $ länge])' –

+0

uuh das ist schlau ... ich überprüfe das. Danke. – cgee

+1

Da Ihre Zeichenfolge mit // beginnt und Sie möchten, dass sie mit http: // beginnt, verketten Sie einfach "http:" mit Ihrer Zeichenfolge? – Kulvar

Antwort

0

Eine weitere Option ist für diese regex zu verwenden:

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

Hier ist eine regex101 Geige:
https://regex101.com/r/lUXTDf/1

Und dies ist eine Verwendung in PHP mit preg_replace:

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

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

+0

Das ist wirklich schlau! Vielen Dank. – cgee

+0

Dies ist die beste Antwort. Vielen Dank! Danke für die Webseite regex101.com .. Kannst du mir etwas dazu erklären? – cgee

+0

Fragen Sie und ich werde erklären :) – Dekel

0

Eine starke Art und Weise ist parse_url verwenden und die URL Teil für Teil neu zu erstellen:

$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); 

demo

-1

Sie können die Funktion explodieren verwenden:

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

dann können Sie machen ein Forloop, um das Array wieder in eine Zeichenfolge zu setzen.

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

1

Hoffe, das ist das, was Sie sich wünschen.

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

gibt Ihnen http://Hello World/theEnd!

Wenn Sie Lust bekommen möchten, können Sie setzen diese eine Schleife als gut.

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

das gibt Ihnen

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

'trim ($ str,"/")' wird reichen. –

+0

Ich denke, das funktioniert auch. – poohbear

-1

@cgee Verwendung ltrim() Funktion wird es linke Seitenverkleidung bedeutet, dass Sie Zeichenfolge des/oder Start// beide nur versuchen, die unten eine

<?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, '/'); 
?> 
Verwandte Themen