【发布时间】:2013-11-19 13:39:10
【问题描述】:
代码:
function updateGUI()
{
foreach ($GLOBALS['content_array'] as $i)
{
$title = $i[0];
$rating = $i[1];
echo "<li class=contentList><a class=contentListLink href=filmer_php.php?title=".$title."><span class=spantitle>".$title."</span><span class=spanrating>".asteriskifyRating($rating)."</span></a></li>";
}
}
输出:
资源:
http://dist3.webbintro.se/assignments/3/movies.txt
context:所以我正在创建 <li> 并附有 <a>,并且我从全局变量(不重要)中获取 <li> 的 $title。
问题是查询字符串不包含完整的字符串,因为某些$title 包含空格,因此它们在空格处被截断。我试过使用转义字符\" 但没有用,我找不到任何关于如何正确解析的好文章..
我也希望解决方案不包含正则表达式,但如果只能使用正则表达式解决,那就这样吧。
EDIT1: 上下文:好的,urlencode 解决了最大的问题。在“星球大战”之前我仍然得到一个 mojibake 方块,有什么建议吗?
完整代码: http://jsfiddle.net/Uv5bV/
EDIT2: 删除了 utf-8 BOM,从这个线程得到了解决方案:How to remove multiple UTF-8 BOM sequences before "<!DOCTYPE>"?
代码:
function remove_utf8_bom($text)
{
$bom = pack('H*','EFBBBF');
$text = preg_replace("/^$bom/", '', $text);
return $text;
}
【问题讨论】:
-
您可能想要检查您正在生成的 HTML。您需要在链接周围加上引号 - 目前,它实际上是
<a href=filmer_php.php?title=Star Wars>,空格之后的任何内容都被视为标签的单独属性。
标签: php string parsing get query-string