将变量字符串解析为GET查询字符串不正确

时间:2013-11-19 13:39:11

标签: php string parsing get query-string

代码:

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>";
        }
    }

输出: enter image description here enter image description here

资源: http://dist3.webbintro.se/assignments/3/movies.txt

上下文:所以我创建的<li>附加了<a>,我从全局变量中获取$title的{​​{1}}(不重要) 。 问题是查询字符串不包含完整字符串,因为某些<li>包含空格,因此它们会在空格处被截断。我尝试使用转义字符$title但是没有用,我找不到任何关于如何正确解析的好文章。 此外,如果解决方案不包含正则表达式,我更愿意,但如果这只能用正则表达式解决,那么就这样吧。

EDIT1: 上下文:好的,urlencode修复了最大的问题。在“星球大战”之前,我还在找一个mojibake广场,有什么建议导致这个问题吗?

完整代码: http://jsfiddle.net/Uv5bV/

EDIT2: 删除了utf-8 BOM,从这个帖子中获得了解决方案:How to remove multiple UTF-8 BOM sequences before "<!DOCTYPE>"?

代码:

\"

1 个答案:

答案 0 :(得分:5)

添加url encoding

echo '<li class="contentList"><a class="contentListLink" href="filmer_php.php?title='.urlencode($title).'"><span class="spantitle">'.$title.'</span><span class="spanrating">'.asteriskifyRating($rating).'</span></a></li>';

你还应该多关注引号(单引号和双引号)。