删除php echo中url的某些部分

时间:2017-02-28 18:12:21

标签: php echo

如何在php echo语法中删除url的某些部分 这个链接

    <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" />

正在呈现此

     &amp;

&amp; 正在编码为

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

任何想法如何解码这部分,所以它只是一个&amp; 。也完全删除.jpg后的所有内容

只是一个初学者,所以这就是我试过的

# Send non-www to www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Send test.mysite.com to https
RewriteCond %{HTTPS} off
#RewriteCond %{HTTP_HOST} ^(.+)\.test\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^www\.test\.mysite\.com$ [NC]
RewriteRule ^ https://www.test.mysite.com%{REQUEST_URI} [L,R=301]

不工作 请帮忙 亲切的问候 玛利亚

2 个答案:

答案 0 :(得分: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用于反转 做法。和正则表达式选项。很多选择!

答案 1 :(得分: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
)

从返回的数组中选择所需的组件,修改它们并组成新的URL。要修改路径,您可以使用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;