我正在使用 AJAX 实时搜索来生成特定于用户配置文件的链接。它运作良好,我总是以我想要的个人资料结束,但有一个问题。
让我们为用户 1 执行此操作(用户名 = testuser;user_id = 1;博客名 = testblog)。如果我搜索“test”,将显示两个链接,即指向 testuser 个人资料的链接和指向 testuser 博客的链接。现在奇怪的是,链接的工作方式就像它们看起来像这样:
profile.php?user=1&page=profile
profile.php?user=1&page=blog
但实际链接如下所示:
profile.php?user=%20+%201%20+%20&page=profile
profile.php?user=%20+%201%20+%20&page=blog
由于我最终进入了我想要的页面,你可以说这并不重要,但它确实如此,因为我需要 $GET_['user'] 值始终是实数,而不是我喜欢的那种东西处理,这里。
我希望有一些简单的方法来解决这个问题。像 nodeValue->string 什么的。我需要在这部分代码中更改 nodeValue 我认为:$z->item(0)->childNodes->item(0)->nodeValue
这是我正在使用的代码:
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("../xml/accounts.xml");
$x=$xmlDoc->getElementsByTagName('account');
//get the q parameter from URL
$q=$_GET["q"];
//lookup all links from the xml file if length of q>0
if (strlen($q)>0) {
$hint="";
for($i=0; $i<($x->length); $i++) {
$y=$x->item($i)->getElementsByTagName('username');
$b=$x->item($i)->getElementsByTagName('blogname');
$c=$x->item($i)->getElementsByTagName('companyname');
$z=$x->item($i)->getElementsByTagName('user_id');
//search for usernames
if ($y->item(0)->nodeType==1) {
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) {
if ($hint=="") {
$hint= "<a href='profile.php?user= + " .
$z->item(0)->childNodes->item(0)->nodeValue .
" + &page=profile' >" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a><span> (profile)</span>";
} else {
$hint= $hint . "<br /><a href='profile.php?user= + " .
$z->item(0)->childNodes->item(0)->nodeValue .
" + &page=profile' >" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a><span> (profile)</span>";
}
}
}
//search for blognames
if ($b->item(0)->nodeType==1) {
//find a link matching the search text
if (stristr($b->item(0)->childNodes->item(0)->nodeValue,$q)) {
if ($hint=="") {
$hint= "<a href='profile.php?user= + " .
$z->item(0)->childNodes->item(0)->nodeValue .
" + &page=blog' >" .
$b->item(0)->childNodes->item(0)->nodeValue . "</a><span> (blog)</span>";
} else {
$hint= $hint . "<br /><a href='profile.php?user= + " .
$z->item(0)->childNodes->item(0)->nodeValue .
" + &page=blog' >" .
$b->item(0)->childNodes->item(0)->nodeValue . "</a><span> (blog)</span>";
}
}
}
// Set output to "no suggestion" if no hint was found
// or to the correct values
if ($hint=="") {
$response="no QuickResults, hit enter";
} else {
$response=$hint;
}
//output the response
echo $response;
?>
在我的XMLfile中,如果有帮助,结构如下所示:
<account>
<username>testuser</username>
<user_id>1</user_id>
<blogname>testblog</blogname>
</account>