Я использую прямой поиск AJAX для создания ссылок на конкретные профили пользователя. Он работает хорошо, я всегда оказываюсь в профиле, который хочу, но есть проблема.преобразовать XML nodeValue в строку PHP/HTML
Давайте сделаем это для пользователя 1 (имя пользователя = testuser; user_id = 1; blogname = testblog). Если я буду искать «тест», будут показаны обе ссылки, ссылка на профиль пользователя testuser и ссылка на блог testuser. Странная вещь теперь, ссылки работают, как будто они будут выглядеть следующим образом:
profile.php пользователь = 1 & страница = профиль
profile.php пользователь = 1 & страница = блог?
но фактические ссылки выглядеть следующим образом:
profile.php пользователь =% 20 +% 201% 20 +% 20 & страница = профиль
profile.php? Пользователя =% 20 +% 201% 20 +% 20 & страница = блог
Так как я в конечном итоге на странице, я хочу, чтобы вы могли сказать, что это не имеет значения, но это так, потому что мне нужно, чтобы значения $ GET _ ['user'] всегда были реальными числами, а не такими вещами, с которыми я имею дело, здесь.
Надеюсь, есть простой способ исправить это. Как nodeValue-> string или что-то еще. Мне нужно изменить nodeValue в этой части кода, я думаю: $ z-> пункт (0) -> childNodes-> пункт (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;
?>
Внутри моей XML файле структура выглядит следующим образом, если это помогает:
<account>
<username>testuser</username>
<user_id>1</user_id>
<blogname>testblog</blogname>
</account>
Выполнено, и это работает, спасибо вам за помощь и дайте мне знать :) – Maxischl
Счастливые помочь. Я был бы рад, если бы вы отметили мой пост как [принятый ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Благодаря! –
точно, я даже не знал об этом;) – Maxischl