2010-09-12 3 views
1

Я работал над скриптом, который может быть использован для внутренней вики, которая удалит свойства для пользователя, который неактивен. Я считаю, что я почти там, но у меня проблема с api.Использование urlencode в скрипте

Я думаю, мне нужно использовать urlencode на пути $ delete, но только для @ в адресе электронной почты и # в свойстве. Я знаю, как использовать urlencode для всего, но не только об этом. Как он работает, он перебирается, чтобы получить свойства, и большинство из них содержат # в имени. Любой, кто может помочь изменить, чтобы эта работа была высоко оценена!

Вот сценарий:

<?php 

    $user_id="[email protected]"; 

    $url=('http://admin:[email protected]/@api/deki/users/[email protected]/properties'); 
    $xmlString=file_get_contents($url); 

    $delete = "http://admin:[email protected]/@api/deki/DELETE:users/$user_id/properties/%s"; 
    $xml = new SimpleXMLElement($xmlString); 

    function curl_fetch($url,$username,$password,$method='DELETE') 
    { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // returns output as a string instead of echoing it 
     curl_setopt($ch,CURLOPT_USERPWD,"$username:$password"); // if your server requires basic auth do this 
     return curl_exec($ch); 
    } 

    foreach($xml->property as $property) { 
     $name = $property['name']; // the name is stored in the attribute 
     curl_fetch(sprintf($delete, $name),'admin','12345'); 
    } 

    ?> 
+0

Работает ли эта строка ?: '$ xmlString = file_get_contents ($ url);'. Если это так, URL-адрес действителен. –

+0

Не можете ли вы использовать str_replace, если знаете, что вы хотите закодировать? –

+0

@SimpleCoder Это происходит, но проблема в том, что удаление api не работает. Когда я запускал отдельную команду CURL, используя urlencoded версию, она удаляла свойство по своему желанию. Но когда он не был закодирован, он дал мне ошибку 404 и не смог завершить. – Aaron

ответ

Смежные вопросы