替换符号奇怪的情况

时间:2011-06-02 05:28:16

标签: php string replace str-replace

foreach($ret as $object)
{
    $res = $object->...;
    $img_src = $res[0]->src;
    echo $img_src . '<br />';
    echo str_replace("&size=2", "", $img_src) . '<br /><br />';
}

$img_src'http://site.com/img.jpg&size=2'

我必须收到相同的链接但没有&size=2。为什么我的代码中的最后一行不起作用。它显示了相同的网址。

3 个答案:

答案 0 :(得分:2)

您是否绝对确定源字符串中存在任何愚蠢的不可打印字符?尝试使用它进行调试:

printf("%s\n", join(':', str_split($img_src)));

并确保确实在字符串中包含&amp; size = 2。如果你看到两个连续的冒号,你就会有类似于\ 0或其他角色的东西在你的字符串中间弄乱你的作品。

答案 1 :(得分:0)

似乎在这方面工作:

http://site.com/img.jpg&size=2 
http://site.com/img.jpg

<?php
$img_src = 'http://site.com/img.jpg&size=2';
echo $img_src.'<br />';
echo str_replace("&size=2", "", $img_src).'<br/><br/>';
?>

答案 2 :(得分:0)

使用preg_replace:

$c=preg_replace("/&size=2/","",$img_src);

使用示例

<?php
$sr="http://site.com/img.jpg&size=2";
echo preg_replace("/&size=2/","",$sr);
?>

这将输出

http://site.com/img.jpg