Мне нужно закодировать только часть пути $ delete. Только @ в адресе электронной почты и # в собственности. Я знаю, как использовать urlencode для всего этого, но не только для этого. То, как это работает, состоит в том, чтобы пройти через свойства для получения свойств, и большинство из них включают # в имени. Любой, кто может помочь изменить, чтобы это работает, будет принята с благодарностью!
Удалить:
$delete = "http://admin:12345@192.168.245.133/@api/deki/DELETE:users/$user_id/properties/%s";
- Здесь вы можете увидеть $ user_id это будет адрес электронной почты, НО символ @ необходимо кодировать.
- Свойства, которые следуют в самом конце, имеют # внутри имени, это также необходимо кодировать. Например, одно имя свойства userprofile # external.created_date
Вот код на данный момент:
<?php
$user_id="john_smith@ourwiki.com";
$url=('http://admin:12345@192.168.245.133/@api/deki/users/=john_smith@ourwiki.com/properties');
$xmlString=file_get_contents($url);
$delete = "http://admin:12345@192.168.245.133/@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');
}
?>