我不知道为什么我无法用&
&
这是我的字符串:/Designers/batlak&selvig.jpg
。
这是我到目前为止所尝试的:
$image = preg_replace("#(&(?!amp;))#U",'&',$brand['image']);
$image = str_replace('&','&',$brand['image']);
$image = htmlspecialchars($brand['image']);
$image = mysql_real_escape_string($brand['image']);
$image = urlencode($brand['image']); // This works, but image will not show
$image = rawurlencode($brand['image']); // This works, but image will not show
有什么建议吗?
更新
是的,它是<img>
标记使用的图片网址的一部分
urlencode
不起作用 - 图片代码无法理解格式。
这是我在W3C Validator上得到的错误:
Validation Output: 1 Error
Line 84, Column 104: & did not start a character reference.
(& probably should have been escaped as &.)
更新2
这就是我测试它的方式:
<?php
$image = str_replace('&','&',$brand['image']);
echo $image;
?>
输出:
/Designers/batlak&selvig.jpg
我还测试了用$brand['image']
/Designers/batlak&selvig.jpg
答案 0 :(得分:4)
适合我:
echo str_replace('&', '&', '/Designers/batlak&selvig.jpg');
// output:
Designers/batlak&selvig.jpg
也许你把它扔进了一个href或src,它在浏览器状态/位置栏中被转义。如果您查看源代码,它将被正确转义。
答案 1 :(得分:1)
对于网址:
$image = urlencode($brand['image'])
对于你的问题:
preg_replace('/&(?![A-Za-z0-9#]{1,7};)/','&',$brand['image']);
替换所有'&'
而不替换任何现有的'&'
字符。
答案 2 :(得分:1)
Firebug会“自动隐藏”HTML实体。
因此请运行并粘贴原始(查看源,复制,粘贴)结果:
var_dump($brand['image']);
var_dump(urlencode($brand['image']));
var_dump(htmlspecialchars($brand['image']));
我的猜测是:
$image = htmlspecialchars(urlencode($brand['image']));
问题很明显,你的文件名中有一个&符号,这很......很棘手;)