PHP заменяет хэштег текстом, удобным для URL

Я работаю с PHP-версией кнопки Pinterest Pin It, и у меня возникла проблема с «описанием» части URL-адреса...

Я использую php для генерации URL:

$pinurl = 'http://foo.com';
$pinmedia = 'http://foo.com/picture.jpg';
$pindesc = 'my description with #hashtag';

$pin = 'http://pinterest.com/pin/create/button/?url='.$pinurl.'&media='.$pinmedia.'&description='.$pindesc.'';

echo '<a href="'.$pin.'" class="pin-it-button" count-layout="none" target="_blank">Pin It!</a>';

Проблема, с которой я сталкиваюсь, заключается в том, что когда в моей переменной $pindesc есть хэштег или только хэштег, Pinterest не читает его из URL-адреса, потому что он выглядит так:

http://pinterest.com/pin/create/button/?url=http://foo.com&media=http://foo.com/foo.jpg&description=#foo

Так что, очевидно, #foo не читается как описание...

Мне было интересно, есть ли какая-то работа или я мог бы использовать оператор «if», чтобы запустить мою переменную $pindesc, чтобы проверить и заменить хэштеги на «% 23», который является «дружественным к URL».

Спасибо!


person tcd    schedule 26.06.2012    source источник


Ответы (2)


Вы можете использовать urlencode для преобразования любых сложных символов в вашем скрипте:

$pindesc = urlencode('my description with #hashtag');
person John C    schedule 26.06.2012

Используйте rawurlencode:

$pin = 'http://pinterest.com/pin/create/button/?url='.rawurlencode($pinurl).'&media='.rawurlencode$pinmedia).'&description='.rawurlencode($pindesc).'';

Это приведет к кодированию URL-адресом всех символов, кроме -_.~ (RFC 3986).

person zamnuts    schedule 26.06.2012