开发者

Encode portion of path using PHP

开发者 https://www.devze.com 2023-01-17 13:02 出处:网络
I need to encode only part of the $delete path. Only the @ in the email address and # in the property. I know how to use urlencode for the whole thing but not on just that. The way it works, is it loo

I need to encode only part of the $delete path. Only the @ in the email address and # in the property. I know how to use urlencode for the whole thing but not on just that. The way it works, is it loops through to get the properties and most of them include # in the name. Anyone who can help modify so that this works would be greatly appreciated!

The delete:

 $delete = "http://admin:12345@192.168.245.133/@api/deki/DELETE:users/$user_id/properties/%s";
  1. Here you can see $user_id this will be an email address BUT the @ symbol needs to be encoded.
  2. The properties which follow at the very end, has a # within the name, this needs to also be encoded. For example, one property name userprofile#external.created_date

Here is the code so far:

 <?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');
    }

    ?>


Have you tried this? str_replace($string, array('@', '#'), array('%40', '%23'));

The urlencode function does not allow you to limit it to a subset of characters.

0

精彩评论

暂无评论...
验证码 换一张
取 消