2017-02-28 53 views
1

如何刪除網址的某些部分在PHP回聲語法 此鏈接刪除網址的某些部分在PHP回聲

http://www.celebrationinvites.com/retro_blocks_maroon_white_graduation_announcement_zazzle_invitation2-256439384662275012.html 

這個代碼

<meta name="twitter:image" value="<?php echo(str_replace("367.jpg", "150.jpg", $imageSrc)) ?>" /> 

被渲染這個

<meta name="twitter:image"  
    value="https://rlv.zcache.com/retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg?rlvnet=1&amp;bg=0xFFFFFF" /> 

&正在編碼d到

 &amp; 

任何想法如何這部分解碼,所以它只是一個&。 .jpg文件

只是一個初學者也經過徹底清除一切,所以這就是我試圖

<meta name="twitter:image" value="<?php echo (substr($string, 0, -25, $imageSrc)) ?>" /> 

不工作 請幫助 親切的問候 瑪麗亞

回答

2

您最初echostr_replace沒有編碼&。在您的$imgSrc變量中已經編碼了 。您可以使用 urldecodeurlencode函數來操作它,但我不認爲 它是必需的,因爲您要刪除.jpg 之後的內容。

substr方法是正確的,但是您誤用了該函數。 第一個參數是要處理的字符串。你按順序通過它。實際上,沒有第四個論點。

此外,<?php echo ... ?>可以減少到<?= .. ?>。因此,這將 工作:

<meta ... value="<?= substr($imageSrc, 0, -25) ?>" /> 

如果不事先在.jpg是知道的,你可以搜索 ,然後用這個位置長度substr,加上 這針長度偏移本身:

<meta ... value="<?= substr($imageSrc, 0, strpos($imageSrc, '.jpg')+4) ?>" /> 

取而代之的strpos還有strrpos對反 方法。和正則表達式選項。很多選擇!

+0

工作就像一個魅力!非常感謝! 所以如果我想結合這兩個 」/> 」/> 這樣圖像的大小以及部分after.jpg被刪除......我該怎麼去關於那個? 也在上面說的解決方案,你給了什麼呢 +4)?>」 /> 這部分怎麼辦?是什麼+4實際要求的代碼呢?:) 再次感謝! – KeenLearner

+0

@KeenLearner喜高興,這關於組合,你可以嵌套函數調用,代替函數調用中的字符串,使用其他函數,比如'substr(str_replace(「...」),0,-25)'。或者在PHP代碼中的其他地方執行兩步操作,例如將轉換保存到一個新字符串中,然後再次執行。如果您需要更詳細的幫助,請發佈另一個單獨的問題,我們將很樂意跳進它。 – sidyll

+0

@KeenLearner關於'+ 4',正如你所知'substr'從第二個參數到第三個參數產生了一個子字符串,在這種情況下0是函數調用返回的內容'strpos'返回posi搜索到的字符串,但第一個caracter的位置。所以如果沒有+4,它也會削減'.jpg'部分。因此,它只是一個偏移量,可以添加到'strpos'返回的數字中。簡單算術 – sidyll

0

使用PHP函數parse_url()到輸入URL分成部分:

$pieces = parse_url("https://rlv.zcache.com/retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg?rlvnet=1&amp;bg=0xFFFFFF"); 
print_r($pieces); 

這是結果:

Array 
(
    [scheme] => https 
    [host] => rlv.zcache.com 
    [path] => /retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg 
    [query] => rlvnet=1&amp;bg=0xFFFFFF 
) 

接你返回數組所需要的組件,對其進行修改和撰寫新的網址。要修改路徑,您可以使用substr()(或其他string functions),preg_replace()pathinfo()

例如:

// Use regexp to make sure the string is replaced only at the end of the path 
$path = preg_replace('/367\.jpg$/', '150.jpg', $pieces['path']); 

然後放在一起只有你所需要的碎片:

$url = $pieces['scheme'].'://'.$pieces['host']; 
if ($pieces['port']) { 
    $url .= ':'.$pieces['port']; 
} 
$url .= $path;