Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add newlines or carriage returns to description on facebook graph API

It sounds like a pretty simple question but I can find the answer no where.

I have a post from a textarea. and I want to use the current facebook php library to do the following...

$description = $_POST['textarea_description'];

//magic happens

$attachment =  array(
'access_token' => $token,
'message' => "$title",
'picture' => "$image_url",
'link' => "$action_link",
'name' => "$action_label",
'caption' => "$caption",
'actions' => $action_json,
'description' => "$description",
 );

$facebook->api('/'.$my_uid.'/feed', 'POST', $attachment);

and have it work. Right now it seems to ignore

<br> <br /> \n \r \n\r \r\n

but I am sure I might have done something to screw up my testing.. I just need to replace 'magic happens' with something that works. Right now it just converts all of the newlines I am throwing at it to spaces.. Pretty frustrating. Someone on the facebook forums suggested addslashed() of all things... but that did not seem to work for me

Thanks, -FT

like image 312
ftrotter Avatar asked Oct 13 '10 09:10

ftrotter


2 Answers

If your lines of text are long enough, and you replace each space in each line with a non-breaking space ("&nbsp;") and put a regular space at the end of the line, then this will have the effect of forcing each line onto a new line, e.g.

This&nbsp;is&nbsp;some&nbsp;example&nbsp;text&nbsp;etc. This&nbsp;is&nbsp;some&nbsp;example&nbsp;text&nbsp;etc. This&nbsp;is&nbsp;some&nbsp;example&nbsp;text&nbsp;etc.

If any lines are too short, you can pad them out with &nbsp; chars

like image 77
GStephens Avatar answered Sep 20 '22 15:09

GStephens


I write simple function which add &nbsp; after every row text.

public static function fbLinkDescriptionNewLines($string){
    $parts = explode("\n", $string);
    $row_limit = 60;

    $message = '';
    foreach($parts as $part){
      $str_len = strlen($part);
      $diff = ($row_limit - $str_len);

      $message .= $part;

      for($i=0; $i <= $diff; $i++){
        $message .= '&nbsp;';
      }
   }
    return $message;
}

NOTE: in your string you must use \n for new lines.

like image 22
Faraona Avatar answered Sep 21 '22 15:09

Faraona