Twitter + PHP + Codeigniter пишем twitter статус на PHP



A library of PHP classes that provide auto-linking and extraction of usernames, lists, hashtags and URLs from tweets. Originally created from twitter-text-rb and twitter-text-java projects by Matt Sanford and ported to PHP by Mike Cochrane, this library has been improved and made more complete by Nick Pope.


  • PHP 5.3 or higher
  • ext-mbstring
  • ext-intl

If the necessary extensions are not installed on the server, please install it additionally or use symfony/polyfill.


You can install this library into your application using Composer.


  • Add links to all matching Twitter usernames (no account verification).
  • Add links to all user lists (of the form @username/list-name).
  • Add links to all valid hashtags.
  • Add links to all URLs.
  • Support for international character sets.


  • Extract mentioned Twitter usernames (from anywhere in the tweet).
  • Extract replied to Twitter usernames (from start of the tweet).
  • Extract all user lists (of the form @username/list-name).
  • Extract all valid hashtags.
  • Extract all URLs.
  • Support for international character sets.

Hit Highlighter

  • Highlight text specifed by a range by surrounding with a tag.
  • Support for highlighting when tweet has already been autolinked.
  • Support for international character sets.


  • Validate different twitter text elements.
  • Support for international character sets.


  • Parses a given tweet text with the weighted character count configuration.

Length validation

twitter-text 3.0 updates the config file with emojiParsingEnabled config option. When true, twitter-text-php will parse and discount emoji supported by the Unicode Emoji 11.0 (NOTE: Original twitter-text supported twemoji library). The length of these emoji will be the default weight (200 or two characters) even if they contain multiple code points combined by zero-width joiners. This means that emoji with skin tone and gender modifiers no longer count as more characters than those without such modifiers.

twitter-text 2.0 introduced configuration files that define how Tweets are parsed for length. This allows for backwards compatibility and flexibility going forward. Old-style traditional 140-character parsing is defined by the v1.json configuration file, whereas v2.json is updated for «weighted» Tweets where ranges of Unicode code points can have independent weights aside from the default weight. The sum of all code points, each weighted appropriately, should not exceed the max weighted length.

Some old methods from twitter-text-php 1.0 have been marked deprecated, such as the Twitter\Text\Validator::isValidTweetText() , Twitter\Text\Validator::getTweetLength() method. The new API is based on the following method, Twitter\Text\Parser::parseTweet()

This method takes a string as input and returns a results object that contains information about the string. Twitter\Text\ParseResults object includes:

weightedLength : the overall length of the tweet with code points weighted per the ranges defined in the configuration file.

permillage : indicates the proportion (per thousand) of the weighted length in comparison to the max weighted length. A value > 1000 indicates input text that is longer than the allowable maximum.

valid : indicates if input text length corresponds to a valid result.

displayRangeStart, displayRangeEnd : An array of two unicode code point indices identifying the inclusive start and exclusive end of the displayable content of the Tweet. For more information, see the description of display_text_range here: Tweet updates

validRangeStart, validRangeRnd : An array of two unicode code point indices identifying the inclusive start and exclusive end of the valid content of the Tweet. For more information on the extended Tweet payload see Tweet updates


For examples, please see tests/example.php which you can view in a browser or run from the command line.


You’ll need the test data which is in YAML format from the following repository:

twitter/twitter-text already included in composer.json , so you should just need to run:

There are a couple of options for testing conformance:

  • Run phpunit in from the root folder of the project.

Thanks & Contributions

The bulk of this library is from the heroic efforts of:

How to Auto Post on Twitter with PHP

Manually post to social networks is probably better than to use an automated method. But, if you post many new topics every day, automated post is practically inevitable.

Twitter, as almost any social network, brings an Application Programming Interface, Twitter API, in order to communicate with it programmatically. You cannot use Twitter API directly (using your username and password), but you have to create a Twitter App. Creating a Twitter App is easy (see below). After you create your app, you get ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret and you have to use them as credentials to communicate using Twitter API.

Additionally, you need a library for your programming language (PHP in my case) to easily use Twitter API. There are many libraries available. In this tutorial I use Codebird-php.

How to Create a Twitter app

Step 1 — Go to and sign in with your account

Step 2 — Press ‘Create a new application’ button

Step 3 — Complete the required fields and press ‘Create your Twitter application’ (in the bottom of the screen)

Step 4 — Go to ‘Settings’ TAB and set Application Type to ‘Read and Write’. Then press ‘Update this Twitter application’s settings’

Step 5 — Go to Details TAB and press ‘Create my access token’ button

Step 6 — Go to oAuth tool TAB and get your access tokens

Which PHP library for Twitter to select?

You may use any library available (in PHP section) of twitter libraries.

I tested many of these libraries. The are all working well. I finally selected Codebird-php, because

  • it is well written and documented
  • you can easily post an image with this library

Get Codebird-php from Github or Sourceforge. There is a DEV branch (2.5.0) on Github, which works well (at least with my tests). But, I preferred to use the stable version 2.4.1 (MASTER branch).

Actually, you need two files

  • codebird.php (the main class)
  • cacert.pem (Validate Twitter SSL certificate)

Get and put them in the same directory.

Codebird Requirements

  • PHP 5.3.0 or higher
  • php CURL extension (install to Debian/Ubuntu etc with apt-get install php5-curl )
  • php OpenSSL extension (already installed in most systems)

Post single tweet using php

Here is an example to post a single tweet

Post tweet with image using PHP

Here is an example to post a tweet with image

Twitter 140 characters restriction

Although the total length is more than 140 chars, you can successfully tweet DIRECTLY, something like this

because, Twitter will shorten the URL for you, so the total lenght will become less than 140.

But, you cannot do it using the above code. So, keep your automatic tweets length less than 140 characters (use fewer words or shorten URL)

Putting them all together

The following PHP script can be invoked from command line (or Cron) or from your browser.

Remember to put this script in a protected directory of your web server (without public access).

Here is a short description of the script.

  • I use MySQL in this example, but, of course, any database could be used. In my database, the «topics» table has some columns to support post automation to Twitter, as:
    • twitter_post varchar(140) — the text to be posted
    • twitter_image varchar(400) — the path of the image to be uploaded (if any)
    • twitter_pubstatus int — «0» means that this topic is pending to be posted, «1» means topic has been posted to twitter
  • First, an array is created ( $share_topics ), which contains the topics to be posted to twitter. Obviously, you have to customize the SQL query, according to your database structure.
  • Then, a connection is established with Twitter using my Twitter app tokens and codebird-php
  • Each array element is posted to Twitter. I check the response using If response is 200 (SUCCESS), this topic twitter_pubstatus is set to 1 (so, it will not be tweeted once more, in case script will run again)
  • The script produces a meaningful report and keeps logs.

    Take care for logfile rotation, for example:

    Add the following replace /path/to/. with your path)

    Here is the code:

    Cron automation

    Here is an example to run every day on 07:30 (your server time) the auto share php script, using Cron. A mail will be sent with the results.


    The most popular PHP library for use with the Twitter OAuth REST API.


    With Composer

    The recommended and easy as pie method is Composer. Setup require in your projects composer.json file. Latest release:

    Import the TwitterOAuth class.

    Start making API requests.

    The old fashioned way

    Download the latest release and unpack in a twitteroauth directory. Require the autoloader that will in turn require the TwitterOAuth classes automatically.

    Start making API requests.


    Versions listed as «active support» or «security fixes» are supported.


    The old fashioned way

    Download the latest release and unpack in a twitteroauth directory. Require the autoloader that will in turn require the TwitterOAuth classes automatically.

    Start making API requests.

    Authorization flow

    This site is a working example. to see the flow.


    Unlike many Twitter API libraries, TwitterOAuth doesn’t provide a custom function for every API method. Instead there are a couple of generic functions so that as Twitter adds features to the API you don’t need to update the library. Here is an example of GET statuses/home_timeline.


    TwitterOAuth provides a couple of minimalist wrappers around Twitter’s API methods.


    Only used when authorizing access to a users account. Includes API methods like POST oauth/request_token and POST oauth/access_token.

    This is a special wrapper that doesn’t hit the API. It builds the URL where users will authorize access to their account at. Only used for GET oauth/authorize and GET oauth/authenticate.

    Twitter + PHP + Codeigniter: пишем twitter статус на PHP

    Hi all,

    I’ve been banging my head against this for days now, and simply can’t find an easy-to-follow resource on it, and for the life of me, can’t get it working.

    Has anybody got a simple, easy-to-follow, step by step, guide on how to integrate Twitter’s Oauth into my site?

    I’ve loaded Elliot Haughin’s CI Library for Twitter & Oauth.

    Here’s my controller (twitter_call.php):

    $this->twitter->oauth($this->_consumer_key, $this->_consumer_secret, $this->_access_token, $this->_secret_access_token);

    //Load this data into a view and show it.
    $this->load->view(‘twitter’, $data);

    and here’s my view(twitter.php):

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #’system’ can be replaced if you have renamed your system folder.
    RewriteCond % ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]

    #When your application folder isn’t in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename ‘application’ to your applications folder name.
    RewriteCond % ^application.*
    RewriteRule ^(.*)$ /index.php/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn’t true it sends the
    #request to index.php
    RewriteEngine On
    RewriteBase /
    RewriteCond % !-f
    RewriteCond % !-d

    RewriteRule ^(.*)$ index.php/$1 [L]

    What I’ve done too:
    Set $config[‘uri_protocol’] = «PATH_INFO»;
    Set $config[‘permitted_uri_chars’] = ‘a-z? 0-9

    Now the problem I’m up against is — when I load, the URL reverts to a login page where I log in to the app. If I re-set my $config[‘uri_protocol’] to AUTO, the login script for the app works, but I get no joy from the twitter code.

    I just want to update my twitter status from this little app behind my site. This is driving me crazy, and my urge to type in capital letters is overwhelming.

    Can anyone help in a constructive manner? Referring me to Matt Willos site or Elliott Haughins site won’t really cut it

    I can give someone access to my live code playground if needs be.

    All info appreciated — thanks.

    Работа со службами RESTful в CodeIgniter

    Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

    CodeIgniter хорошо известен своей мощью в качестве фреймворка веб-приложений на PHP, но не так часто он используется где-то ещё. Сегодня мы узнаем, как пользоваться CodeIgniter при создании RESTful API для веб-приложений и продемонстрируем взаимодействие с вашим собственным API или другими веб-сервисами RESTful, такими как Facebook и Twitter.

    Детали урока

    • Программы: CodeIgniter, CodeIgniter REST server и CodeIgniter REST client
    • Трудность: средняя
    • Расчётное время завершения: 30 минут


    Если вы следите за серией CodeIgniter From Scratch, то уже знаете, как относительно быстро и просто собрать веб-приложения, такие как блоги, системы CMS, сайты брошюр и прочее. То, о чём вы, возможно, не думали — это использование CodeIgniter для создания интерактивного API. Попробовав несколько REST, я обнаружил, что они не только не обладают простотой, но и упускают большинство функций, которых вы ожидаете от реализации RESTful; поэтому я построил свой собственный. В уроке показано, как использовать этот код для настройки REST API, и дан пример того, как взаимодействовать с ним из вашего веб-приложения.


    1. Вы имеете веб-сервер, локально или онлайн, и умеете управлять файлами на нём.
    2. Вы прочитали несколько уроков CodeIgniter from Scratch.
    3. Вы знаете, как настроить CodeIgniter.
    4. Вы немного знакомы с сервисами RESTful.

    Этот урок разбит на две части. Мы начнем с изучения того, как создать службу RESTful, а затем научимся взаимодействовать с ней несколькими способами.

    Часть 1 — Создание RESTful API

    Шаг 1. Настройка демо-версии

    Во-первых, вы должны загрузить код codeigniter-restserver из GitHub, извлечь его и перенести на свой сервер.

    Когда вы откроете папку, увидите полную установку CodeIgniter для включения демо. Это позволяет пробовать демо-версию REST перед интеграцией с существующим приложением.

    Откройте «application/config/config.php» и установите base_url для получения ссылок. Этот base_url будут для всех разными и полностью зависят от места загрузки ваших файлов.

    Шаг 2. URL-адреса

    С извлеченными файлами и набором base_url мы готовы запустить установку RESTful CodeIgniter и ознакомиться с предложенной демо-версией. Просмотрите базовый URL по умолчанию:

    Здесь вы найдёте примеры ссылок на контроллер example_api, которые можно найти в «application/controllers/example_api.php». Давайте проанализируем URL-адреса этих примеров, чтобы увидеть, что происходит. Первый URL-адрес очень прост.

    Этот URL-адрес очень похож на любой другой URL-адрес CodeIgniter с контроллером и методом, но вы увидите на этой диаграмме, что он называется «Resource». REST — это всё о Resources и они суть существительные в вашем приложении, которые взаимодействуют (добавляются, удаляются, редактируются, запрашиваются) на основе HTTP headers и строк запроса URL или аргументов HTTP.

    Формат вывода по умолчанию — XML, который мы видим в базовом примере. Другие ссылки немного больше и демонстрируют, как передавать параметры и как формат вывода может быть изменен в URL:

    Обычно в CodeIgniter вы просто передаёте значения параметров, но контроллер REST принимает любое количество параметров в любом порядке. Чтобы это сработало, нам нужно передать имя параметра, за которым следует значение в парах.

    В конце URL-адреса находится параметр «format». Это зарезервированный параметр, который изменит формат вывода запрошенных данных следующим образом:

    Предоставляя разработчику API и клиентскому приложению выбор форматов данных для использования, API открыт для гораздо более широкой аудитории и может использоваться с большим количеством языков программирования и систем. И это не единственные форматы, на которых может работать ваш REST API:

    • xml — практически любой язык программирования может читать XML
    • json — подходит JavaScript и всё более для PHP-приложений.
    • csv — открывается с помощью spreadsheet программ
    • html — простая таблица HTML
    • php — представление PHP-кода, который может быть eval()’ed
    • serialize — серийные данные, которые могут быть unserialized в PHP

    Хотя добавление формата к URL-адресу технически не является лучшим RESTful изменения форматов, но легко проверяется браузером и позволяет разработчикам без cURL выполнять простые GET-запросы для API. Более RESTful способ — отправить Content-type HTTP header на контроллер REST с использованием cURL, но это объясню позже.

    Шаг 3. Код

    После открытия application/controllers/example_api.php вы сразу обнаружите несколько отличий от обычных контроллеров CodeIgniter.


    В шаблоне MVC контроллер — центральная точка логики. Он вызывается по запросу пользователя, а затем, основываясь на логике в контроллере, извлекает данные и выводит представления. У CodeIgniter своя логика того, как должен работать Controller, но поскольку мы делаем что-то другое, нам нужна собственная библиотека REST_Controller под собственные логики REST. Поэтому вместо простого использования:

    Работа с ресурсами

    Пустой контроллер настроен, за ним следуют методы или «resources». Вероятно, это самая путаная часть урока, если вы привыкли к работе CodeIgniter. В основном берут Resource и HTTP verb в комбинации для создания имени метода. Таким образом, два примера, которые мы рассмотрели раньше, имели Resource пользователя и пользователей. Поскольку оба они были загружены в браузере, мы знаем, что он использовал GET request и поэтому используются два следующих метода:

    Это может показаться немного странным, но даёт возможность использовать один и тот же URL и отвечать на запрос в зависимости от используемого HTTP verb. Если кто-то пытается получить доступ к вашему API запрещённым способом (в этом примере PUT или DELETE), он получит 404. Если вы не сильны в HTTP verbs, позвольте мне объяснить.

    Используется для извлечения информации о существующем ресурсе. Это используется браузерами, когда вы вводите URL и нажимаете «go», или когда вы нажимаете на ссылку, поэтому он идеально подходит для извлечения информации об одном из ваших ресурсов REST (например, пользователе).

    Используется для обновления информации о существующем ресурсе. Браузеры используют это для отправки большинства типов форм в Интернете, хотя некоторые используют и GET, отправляя действие формы с помощью строки запроса, содержащей данные поля.

    Менее употребляемый и не поддерживаемый большинством браузеров, PUT нужен для создания нового ресурса.


    Также не используемый многими браузерами, этот HTTP verb, скорее всего, нужен для удаления ресурса.

    Если мы поместим в код и заявим каждый verb на ресурс user, это будет выглядеть так:

    Доступ к параметрам и возвращаемым данным

    Итак, теперь API получил свою структуру, настраивая ресурсы и определяя метод для каждой HTTP verb, который мы хотим поддерживать; нам нужны параметры, чтобы мы могли использовать модели и библиотеки CodeIgniter. Это одно из основных преимуществ использования CodeIgniter для API, поскольку мы можем использовать наши существующие модели и библиотеки и не перекодировать их.

    Этот пример содержит пять новых фрагментов кода:


    Используется для возврата переменных GET из строки запроса, например index.php/example_api/user? >


    Является псевдонимом для $this->input->post(), который является методом CodeIgniter для доступа к переменным $ _POST с защитой XSS.


    Считывает аргументы PUT, установленные в HTTP headers или через cURL.


    Вы догадались, что это читается в аргументах DELETE, также заданных в HTTP headers или через cURL.


    Отправляет данные в браузер в любом запрошенном формате данных или по умолчанию в XML. Вы можете опционально передать код статуса HTTP, чтобы показать, что он работал или не прошёл. Например, если предоставленный ID не был в базе данных, вы можете использовать $this->response(array(‘error’ => ‘User not found.’), 404);

    Шаг 4. Работа с вашими моделями

    До сих пор мы работали с примером API в чистой установке. Следующий шаг — запустить REST API из существующей кодовой базы.

    Хотя загрузка идёт с полной установкой CodeIgniter для демонстрации и позволяет создавать API с нуля, важны только два файла:

    Сбросьте эти два файла в ваше приложение CodeIgniter и создайте новый контроллер API.

    Здесь показан пример API с некоторыми родовыми именами моделей В первом методе мы подбираем ? >response() со статусом 200. Если ничего не найдено, не возвращайте никакого body, а 404, чтобы сказать, что ничего не найдено. Можете подумать над расширением, чтобы запускать все виды деятельности API вашего веб-приложения.

    Шаг 5. Обеспечение безопасности API.

    Теперь ваш API построен, он нуждается в защите, чтобы только пользователи, которым предоставляется доступ, могли взаимодействовать с API. Чтобы установить тип входа, имена пользователей и пароли, откроем «application/config/rest.php» вашей кодовой базы.

    Любой может взаимодействовать с любым из ваших контроллеров API.


    Относительно ненадёжный метод входа в систему, который должен использоваться только для внутренних/защищённых сетей.


    Более безопасный метод входа в систему, который шифрует имена пользователей и пароли. Если вы хотите иметь защищённый API, который может получить каждый, используйте дайджест.

    Настройка пользователей. Каждый вход в систему представляет собой элемент массива с ключом и значением. Ключ — имя пользователя, а значение — пароль. Добавьте в массив столько, сколько захотите и отправьте всем, кто будет использовать API.

    Часть 2 — Взаимодействие с сервисами RESTful

    Будь то API, который вы только что построили или общественный сервис, такой как Twitter, вы захотите как-нибудь взаимодействовать с ним. Видя, как службы RESTful работают с базовыми HTTP-запросами, очень легко сделать это несколькими различными способами.

    Различные методы взаимодействия с REST

    Каждый из этих методов взаимодействия будет показан с кодом, размещённым непосредственно в Controller methods. Это потому, что образец легче читать, а обычно помещаются внутри модели или библиотеки для правильного разделения MVC.


    Используя очень простую функцию PHP file_get_contents(), вы можете выполнить базовый GET-запрос. Это самый простой из всех методов, но стоит упомянуть о «быстрых и грязных» моментах.

    Стоит отметить, хотя этот метод не будет работать с использованием HTTP Digest, если вы используете HTTP Basic аутентификацию, можете назначить следующий синтаксис для получения данных из защищённого паролем RESTful API:

    Есть несколько проблем с этим методом: единственный способ установить дополнительные HTTP headers — сделать это вручную с помощью PHP функции stream_context_create(), что может быть очень сложным для новичков в разработке HTTP-запросов. Другим недостатком является получение только body ответа HTTP в его необработанном формате, значит, вам нужно сделать преобразование единственного запроса.

    CURL — самый гибкий способ взаимодействия с REST API, поскольку он был разработан именно для такого рода вещей. Вы можете установить HTTP headers, параметры HTTP и многое другое. Вот пример того, как обновить пользователя с помощью наших example_api и cURL, чтобы сделать запрос POST:

    Взаимодействие с вашим API прекрасно работает, но есть две проблемы с этим методом:

    1. Он использует уродливый путаный синтаксис — представьте себе создание нескольких приложений на его основе.
    2. По умолчанию cURL не установлен на всех серверах.

    Для избавления от этого уродливого синтаксиса CodeIgniter, была разработана библиотека cURL, которая очень упрощает вещи.

    Точно такой же запрос, сделанный с библиотекой cURL, будет выглядеть так:

    Гораздо приятнее смотреть? Ну, есть ещё более простой способ работать с REST в ваших приложениях CodeIgniter, чем это.

    Клиентская библиотека REST

    Была разработана REST client library, которая находится наверху библиотеки cURL для обработки преобразования формата, HTTP logins и других аспектов вашего REST API.

    Здесь видно, что мы делаем запрос GET, отправляя id как параметр и сообщая библиотеке, что мы хотим, чтобы ‘json’ был форматом содержимого. Он обрабатывает для вас настройку Content-type и преобразует данные в объект PHP. Вы можете изменить это значение на ‘xml’, ‘json’, ‘serialize’, ‘php’, ‘csv’ или любой пользовательский MIME-тип, который вам нравится, например:

    Как вы, вероятно, догадались, как и $this->rest->get(), библиотека также поддерживает $this->rest->post(), $this->rest->put(), $this->rest->delete() чтобы соответствовать всем вашим методам REST_Controller.

    Вам понадобится var_dump () результаты, полученные из REST client library, чтобы убедиться, что вы возвращаете правильный формат данных. Преобразование иногда будет массивом, а иногда и объектом, в зависимости от того, как он преобразуется с помощью PHP. Если возвращаемый MIME-тип не поддерживается, он просто возвращает формат в виде обычного текста.

    Общение с Twitter

    С помощью этой библиотеки REST вы можете общаться с другими службами RESTful, такими как Twitter и Facebook. Вот простой пример того, как можно получить информацию о конкретном пользователе на основе его ID, используя Twitter формат XML по умолчанию.

    Глядя на это, вы заметите, что взаимодействие с API Twitter отличается в нескольких отношениях.

    1. Они поддерживают переключение на основе URL-адресов в формате .json вместо /format/json. Некоторые требуют расширения, другие — нет; поэтому лучше всегда их добавлять.
    2. Они в основном поддерживают только GET/POST, но начинают добавлять методы DELETE
    3. У них не всегда есть ресурс в URL, например: users/search — один REST-метод, но lists — это другой.

    Следите за этими различиями, так как они могут вас поймать. Если вы застряли, снова $this->rest->debug() для всего диапазона информации о вашем REST-запросе.


    Объединив информацию о службах RESTful, клиентской библиотеке RESTful CodeIgniter и Twitter API documentation, а также любую другую документацию RESTful API, вы можете создать очень мощные приложения, которые интегрируются с любыми настраиваемыми или общедоступными веб-службами с помощью REST. Вы можете расширить свой API, создав больше REST_Controller или модульный API, используя Matchbox или Modular Separation, чтобы создать контроллер api.php для каждого модуля и поддержки API в качестве аккуратно организованного приложения.

    Напишите урок

    Вы знаете, что можете заработать до $600 за написание урока PLUS и/или видеоролика для нас? Мы ищем глубокие и хорошо написанные пособия по HTML, CSS, PHP и JavaScript. Если можете, то свяжитесь с Jeffrey по адресу

    Обратите внимание, что компенсация будет зависеть от качества урока и его скринкаста.

    How To Display Twitter Feed on Website Using PHP?

    Before we start coding, you might be someone NOT interested in coding. If that’s the case, you should use a website plugin like SociableKIT. Watch the following video.

    Need to embed a Twitter hashtag feed on your website? Watch this tutorial.

    What’s next? You can try SociableKIT now, view a live demo here and here or continue with the code tutorial below.

    Let’s code!

    Do you actively use Twitter for your brand or products? Does your client use it?

    If you use it for your brands or products and you have your own website, it will be a great feature if you can display your twitter feed or posts on your website.

    I know, you can embed your Twitter feed using the Twitter widget, but you cannot customize the look and feel.

    It looks like the default Twitter interface.

    Don’t get me wrong, it looks good! But sometimes, our design scheme or our clients have a different requirement, they want the Twitter feed to look different.

    The good news is, our code for today is a way to do it!

    Today’s post will cover the following content:

    1.0 Source Code Overview
    2.0 Final Output Demo
    3.0 Obtain Access Tokens and Keys
    4.0 Create The index.php File
    5.0 Put Container Tags, Page Title and HTML
    6.0 Specify Keys And Variable Values
    7.0 Get OAuth Signature
    8.0 Make The Authorization Request
    9.0 Retrieve Twitter Feeds With User Information
    10.0 Display Twitter User Information
    11.0 Display Twitter User Status Count And Follower Count
    12.0 Display Twitter Posts / Status Feed
    13.0 Add Your Custom Styling
    14.0 Control Background and Link Colors
    15.0 Download The Source Code
    16.0 Social Media Scripts – LEVEL 3 – PRO PACK
    17.0 What’s Next?
    18.0 Related Source Codes
    19.0 Some Notes

    Let’s get started!

    1.0 Source Code Overview

    Here’s an overview of what our code does:

    1.1 It gets a Twitter users’s profile information and posts from a specified twitter account. We’ll try Taylor Swift’s twitter account in the demo.

    1.2 Display these Twitter data to a webpage (assuming it is your WordPress or PHP website.)

    1.3 Show some awesome UI powered by Bootstrap. If you’re not yet familiar with this awesome front-end framework, see our step by step Bootstrap tutorial here.

    2.0 Final Output Demo

    2.1 LEVEL 1 Source Code Output

    We have to know where we are going, if we’re done with the code tutorial in this post, we will achieve this output:

    2.2 LEVEL 2 Source Code Output

    More improvements were provided after the step by step tutorial. If you need more features, you might need the LEVEL 2 version. It has the following output:

    See the full list of features in section 15.0 below. It has all the details of these features.

    3.0 Obtain Access Tokens and Keys

    3.2 Click the ‘Create New App’ button on the upper right corner.

    3.3 Fill out the form with your information

    3.4 Go back to the twitter apps page, you should see your new app now

    3.5 Click your app and go to the «Keys and Access Tokens» tab

    There you will see the access tokens and keys you need:

    • Consumer Key (API Key)
    • Consumer Secret (API Secret)
    • Access Token
    • Access Token Secret

    4.0 Create The index.php File

    We will make index.php Bootstrap ready. For those not familiar with the CSS framework Bootstrap, please refer to our step by step tutorial here:

    The index.php file will have the following code.

    5.0 Put Container Tags, Page Title and HTML

    We will have the following code inside the «body» tag of our code in section 4.0

    6.0 Specify Keys And Variable Values

    The following code will be ins .

    Access token and keys value were retrieved during our section 3.0 earlier.

    7.0 Get OAuth Signature

    OAuth is an authentication protocol that allows users to approve application to act on their behalf without sharing their password. More about Twitter OAuth here.

    Put the following code below our code on section 6.0

    8.0 Make The Authorization Request

    We can now make request to the Twitter API with the help of $oauth variable and cURL.

    Put the follwing code below our code on section 7.0

    9.0 Retrieve Twitter Feeds With User Information

    Using the the following code, we can get the data in JSON format. Put it below our code on section 8.0

    10.0 Display Twitter User Information

    The following code shows how we can display the specified Twitter user’s information. Put it below our code on section 9.0

    11.0 Display Twitter User Status Count And Follower Count

    Now we will put the following code ins .

    12.0 Display Twitter Posts / Status Feed

    Finally we can now display the user’s Twitter posts.

    13.0 Add Your Custom Styling

    The following CSS code is what I used to add a some style on our page. I put it inside the «head» tag, just below the Bootstrap CSS.

    You can control or change the background or link colors by going to the design settings section of your twitter account.

    Here’s how you can go to that page:

    1. Go to
    2. On the upper right corner of the page, click your picture.
    3. Click «Settings» in the dropdown.
    4. On the left side bar, click «Design».

    You should see the following page.

    «Theme Color» is the link color. Changes made here will reflect in your page using the LEVEL 2 source code.

    15.0 Download The Source Code

    15.1 Getting The Source Code

    You can get the source code by following the whole, well detailed tutorial above. But isn’t it more convenient if you can just download the complete source code we used, and play around it?

    There’s a small fee in getting the complete source code, it is small compared to the:

    ✔ Value or skill upgrade it can bring you, or YES
    ✔ Income you can get from your website project or business. YES
    ✔ Precious time you save. YES
    ✔ Expert advice you can get from me, just in case you have any questions with the code. YES

    For a limited time, I will give you the source code for a low price. DOWNLOAD THE SOURCE CODE LEVEL you desire by clicking its the BUY button below.

    15.1 Download the LEVEL 1 Source Code

    Show Twitter users’ profile picture YES
    Show Twitter users’ name YES
    Show Twitter users’ username with link YES
    Show number of tweets YES
    Show exact number of followers YES
    Specify number of tweets to display YES
    Specify Twitter username where to get tweets YES
    Show profile pic in tweets YES
    Show profile name in tweets YES
    Show profile username in tweets YES
    Show original tweets YES
    Show retweets YES
    Links in tweets are clickable YES
    Bootstrap enabled YES
    Mobile friendly YES

    15.2 Download LEVEL 2 Source Code

    All features of the LEVEL 1 version YES
    Show twitter profile description YES
    Show twitter user’s website with link YES
    Show number of following YES
    Show number of favorites YES
    Twitter profile mentions in tweets are clickable YES
    Show when a tweet was tweeted with «Time ago» format YES
    Show profile banner image YES
    Apply background color set in design settings YES
    Apply link color set in design settings YES
    Free email support for 6 months. Yes
    Free source code updates. Yes

    Do you need more reasons to download it?

    Buy only once, use on unlimited number of websites and Twitter accounts! YES
    No different kind of licenses. YES
    No many different pricing schemes. YES
    No monthly or any recurring fees. YES
    No need to rely on another website to render Twitter feed. YES
    No need for codes from other websites. YES
    You can learn more how to code, I love teaching and can give you free tips! YES
    Familiarize yourself with the Twitter API. YES
    Features are constantly improving, and you get it for free. YES
    Completely customizable. YES

    Thank you for supporting our projects here at!

    15.3 Do You Want a Demo?

    If you want a demo to see if this will work with your own Twitter account, please send me a message via email, or via our official Facebook page!

    Please provide your Twitter username on the message, thanks!

    16.0 Social Media Scripts – LEVEL 3 – PRO PACK

    17.0 What’s Next?

    Today we have learned how to show a Twitter Feed on your website.

    Did you know that you can display Google+ Feed on your website as well?

    Did you know that you can also display other social media data on your website? I’ve created tutorials on them too, see the following:


    Доброго времени суток!

    Пишу с помощью CodeIgniter вход в админку. Есть функция, которая проверяет, был ли осуществлен вход ранее:

    Контроллер — admin. И вместо того, чтобы перейти на страницу ввода логина и пароля, firefox выдает такую вот ошибку:
    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

    Не могу понять, в чем проблема

    в config.php — base_url —, в routes.php — default_controller — admin

    Social Media Scripts — LEVEL 3 — PRO PACK
    ITEM Original Cost LEVEL 3 PRO PACK
    Display Facebook EVENTS on Website $49.99 YES
    Display Facebook PHOTOS on Website $49.99 YES
    Display Facebook VIDEOS on Website $49.99 YES
    Display Facebook FEED on Website $49.99 YES
    Display Instagram FEED On Your Website $49.99 YES
    BONUS! The following script does not have LEVEL 3, only LEVEL 2. We will give them to you as bonus.
    Display Twitter FEED on Website $29.99 YES
    Display Google+ FEED on Website $29.99 YES
    16.06.2014, 17:55

    Здравствуйте, помогите пожалуйста разобраться сCodeIgniter возникает такая ошибка: Fatal error.

    суть проблемы такова когда я из бд пытаюсь вытащить категории для сайта через цикл foreach то у.

    CodeIgniter blog
    Есть ли у кого исходники какого-то блога с авторизацией, комментами? Хотелось бы разобраться, каким.

    Подскажите по Codeigniter
    Весь день долбаюсь с проблемой и не могу решить. Почему при отправке формы ничего не происходит.

    Формы Codeigniter
    Хоть мое знакомство с CI началось недавно но я диву уже даюсь с магии CI, а именно-ты делаешь все.

    18.06.2014, 11:59 2

    Проверьте условия в файлах, у вас скорей всего вышел безконечный цикл.

    check_admin() -> перенаправляет на login() так как по его условию все ОК.
    А login() с помощью своих условий вычисляет что пользователь не авторизировался и перенаправляет обратно

    18.06.2014, 11:59

    Объект в Codeigniter
    Привет всем! Всех с наступившем Новым Годом! Сразу хочу извиниться за наверно тупой вопрос. Но.

    PHP — CodeIgniter
    phpDesigner выдает красный крестик на код HTML встроенный в php. код не я придумал.. всё калька.

    подкатегории в codeigniter
    Здравствуйте, столкнулся с проблемой в codeigniter при создании меню->подменю, до работы в.

    Войти через twitter в codeigniter

    это моя config/tweet.php

    также создал мои приложения в твиттере и установил его секретный ключ в файле config/tweet.php. Я получил эту ошибку.

    Ого! Для этой страницы нет токена запроса. Это специальный ключ, который нам нужен в приложениях, требующих использовать вашу учетную запись Twitter. Вернитесь на сайт или приложение, которое отправило вас сюда и повторите попытку; это была просто ошибка.

    До тех пор, пока у вас нет ключа приложения (ключа API) и секретариата приложения, вы не сможете получить то, что хотите.

    Создайте новое приложение.

    Заполните все обязательные поля, такие как имя и описание приложения.

    Укажите желаемый URL-адрес в качестве URL-адреса обратного вызова для вашего приложения:

    После того, как вы зарегистрировались, мимо введенных учетных данных приложения (ключ клиента (ключ API) и секрет приложения) в поля выше.

    Было бы лучше, если бы вы предоставили фрагмент проблемы, с которой вы столкнулись.

    Use PHP to build a Twitter-like system on your site

    It’s simple to add Twitter-like microblogging to any application using PHP

    If you’ve been paying any attention at all, you know that Twitter is one of the biggest sensations in the Web 2.0 world. For those who don’t know, Twitter (a service available at is a simple microblogging service that allows users to make posts (called tweets) of up to 140 characters that answer the question «What are you doing now?» Users can follow people they find interesting and have followers of their own. In this way, information can be published to a small following or disseminated far and wide.

    A quick glance at any single Twitter account reveals that users typically produce tweets on a wide variety of subject matter, from the everyday (for example, «I’m having a sandwich») to the more sublime. Often, there are embedded links to images, media files, and blog postings. These URLs are frequently obfuscated by services like TinyURL, mostly to keep the total character length of the post at or under 140 characters.

    There are lots of folks who have taken to Twitter and have made an art form out of the super-condensed format, even having conversations with other users (by directing their remarks to @user, for example). From this simple start, a whole galaxy of Twitter-enabled mobile applications and other tools have sprung up. There are even awards now for funniest, most sublime, and most fact-filled tweets, plus online applications that track the state of the various Twitter applications out there.

    Many other sites and services, such as LinkedIn and Facebook, now allow their users to update their current status in a decidedly Twitter-like way. In other words, updating your status on Facebook involves using a condensed message, and, of course, the status usually answers the question «What are you doing right now?»

    Adding a microblogging or status update tool to your own site doesn’t require a lot of work, and it provides your users with a fun and simple way to communicate. The goal of this article is to show you how to do just that. But first, I have to make a few assumptions about you.

    First, I assume that you know something about PHP and MySQL. I also assume that you have access to some kind of locally available Apache Web server that runs PHP and MySQL. For the purposes of this article, I develop on a MacBook Pro using Macintosh, Apache, MySQL, and PHP (MAMP), a freeware program that conveniently provides an entire development environment in one package. However, you should be able to develop on Microsoft® Windows® or Linux® without any difficulty. Finally, I assume that you have an existing application running right now that involves users of some kind and that you’re going to be adding microblogging or tweeting to that application in some way. For that reason, I skip over some of the more user-centric parts of the application (for example, logging in, managing a profile, etc.) in favor of the posts.

    Designing the back end of the application

    At its simplest, the Twitter service centers around two nouns: users and messages. If you’ve already built an application and want to add a Twitter-like service to it, you probably already have user management in place. If you don’t, you need to have some way of uniquely identifying each user in a database table (a primary key, usually an integer), a username (also unique), an e-mail address, a password, etc.

    Tweets (or posts) are stored in a posts table, with each post having a primary key (some kind of sequential integer), a foreign key relationship back to the user that made the post, the post itself (limited to a number of characters), and a date/time stamp.

    The final piece of the puzzle is a database table that shows which users are following whom. All that is needed is some way to record a user ID and the follower ID, giving your application the ability to quickly build lists of followers and easily disseminate information to those who have signed up to follow someone else.

    If you’re following along, go ahead and set up your three database tables now. Use the SQL code shown in Listing 1 to create the first table, called users. (If you already have a users table in place, please ignore this.)

    Listing 1. The users table

    The second table, called posts, is shown below.

    Listing 2. The posts table

    Listing 3 shows the last table, called following. Note that this table has two primary keys.

    Listing 3. The following table

    Before you go any further, make a file called header.php and place all your connection strings for MySQL in it. If you already have a file that handles this, ignore me for now. Just be sure to include this file everywhere because you’ll need it. Listing 4 shows what this file might look like for you.

    Listing 4. Sample header.php file

    Please note that you are also free to add any other kinds of security checks to this header.php file. For example, you could check to see if a user ID has been set in a session variable (showing that the user has actually logged in). If a user isn’t logged in, you can redirect that user to a login page. This article doesn’t get into all of that, but it’s fairly easy to add when you need it.

    Creating the entry form

    Now that you have the back-end tables set up, it’s time to consider the PHP that will handle any data inserts and updates. What you need right now are some simple functions that will:

    1. Allow users to log in and add posts.
    2. Disseminate those posts to anyone following that user.
    3. Allow users to follow other users.

    I usually work within the context of a Model-View-Controller (MVC) application framework such as CodeIgniter because it provides me with a serious set of tools for creating these kinds of applications. For example, I normally start by creating two models (one for users and the other for posts) that allow me to interact with the users, posts, and following tables, then move on from there.

    Because you may already be working within a different framework, I decided against that approach here. Instead, I opt for a simpler approach that is not framework-specific. Also, just for today, I have you cheat a little bit and add a record to your users table to create a series of test users that you’ll make available to your application. I create three users and give them usernames of jane , tommy , and bill .

    When that’s done, create a simple PHP file called functions.php that will contain your major functionality. You’re going to create a handful of functions in this file that allow actions within the context of your microblogging application.

    The first function, shown in Listing 5, is a simple one that allows you to add content to the posts table.

    Listing 5. Function for adding content to the posts table

    To test this simple function, you need to add two more PHP files to the mix. The first is the index.php file, which contains a basic little form for right now — you’ll add a bit more to the page later. The second is the PHP file that the form posts to, called add.php. Listing 6 is the markup for the index.php file. Please note that you are using a PHP session to hard-code a user ID value of 1, which is the user jane in my database. This is perfectly OK to do now, but will obviously need to be changed later.

    Listing 6. Markup for the index.php file

    Also, note that I left some space just above the form for a status message, which you’ll set dynamically in add.php, as shown below.

    Listing 7. Adding posts to the database with the add.php file

    There shouldn’t be anything particularly surprising about this code. It simply takes the field called body from the form and the user ID set in the PHP session and then passes them to the add_post() function in the functions.php file. Then another session variable is set (the update message), and the user is redirected back to the index.php page.

    If you test this little function, the only way you know that it works is by checking the posts table in the database. That isn’t exactly user-friendly, is it? What you need is for the posts to update right on your home page. For that, you need to add a second function to the functions.php file and use it on your home page.

    Adding a list of updates

    It’s time to open the functions.php file and add a second function to it. This time, call the function show_posts() . It will do just that, show all the posts for a particular user ID, as shown below.

    Listing 8. The show_posts() function

    If you pass this particular function a user ID, it returns all the posts made by that user in reverse-chronological order, all bundled in a nice, multidimensional array. To use it, all you have to do is call that function on index.php and retrieve all the posts for that user. Because you’re dealing with a small amount of data for each record, this kind of query scales pretty well.

    Listing 9 is the code you add to the index.php page, right after the form you put in before. By using the show_posts() function in combination with the session variable, you can grab all the posts by the logged-in user. If there are no posts, show an error message of some kind. If there are posts, show them one at a time in a table — or, if you want to get fancy, do your own Cascading Style Sheets (CSS) thing.

    Listing 9. Showing posts on the index.php page

    Figure 1 shows the basic interface you’ve built so far — not bad for just a few minutes’ work.

    Figure 1. The basic interface

    The easy part is over. You now have a basic application that allows users to post their status and see that status displayed. However, there’s one important part missing: There’s no one out there to see your status updates besides you. In the next section, you create a simple interface that lists all users in the system and allows logged-in users to actually follow other users and see their status updates mixed in their own.

    Following other users

    It’s time to add more substance to the functions.php file. You need a show_users() function that gives you a list of all the users in the system. You’ll use this function to populate a user list.

    Listing 10. The show_users() function

    Now that you have the show_users() function, you can create a users.php file that runs it and displays a list of all the users in the system, each with a link that says follow next to the user name.

    Listing 11. A users.php file that runs the show_users() function

    To access this list of users, add a link to users.php on the index.php file, right above the form:

    What you end up with is an easy-to-use table of user names, each with a follow link.

    Figure 2. List of users

    Before moving on to the next phase, it makes sense to write a small function that tells you who the current user is already following. That way, users can use this list to determine if they want to follow or unfollow another user.

    Go back to the functions.php file and add a function called following() , shown in Listing 12. You pass the current user ID to this function to get back every user ID that this user is following.

    Listing 12. The following() function

    You can now run this function on users.php and check to see if a particular user ID is in the array. If it is, use the unfollow link. If it isn’t, then default to follow. Listing 13 shows the revised code.

    Listing 13. Revised users.php file, showing follow and unfollow links

    The next step is simple: Create the action.php file used in the follow and unfollow links. This file accepts two GET parameters: one for the user ID and the other for follow or unfollow. As shown in Listing 14, this file is simple and short like the add.php file.

    Listing 14. The action.php file

    As you can see, you take two very different actions — either follow_user() or unfollow_user() — depending on which link you selected before. You then set a message and redirect users back to the index.php page where they’ll see not only their own messages but recent messages added by the users they follow. Or, in the case of an unfollow, that user’s messages disappear from the listing. You need to add that last bit of code to index.php a little later. Right now, it’s time to add the follow_user() and unfollow_user() functions to functions.php.

    You have to be a bit careful with both of these functions. You can’t just blindly follow or unfollow a user simply because someone clicks that link. First, you have to check if there’s a relationship in the following table. If there is, then you can either ignore the request (in the case of the follow) or act on it (in the case of the unfollow). To simplify things, write a check_count() function you can use in either case, as shown below.

    Listing 15. The check_count() function

    The next step is easy: Display a list of other users the user is following on the home page. You already have a show_users() function, but that shows all users. You can easily repurpose this function by adding a nonrequired argument. This argument is a user ID that you use to limit the list of users to those who have that particular ID in the following position.

    What’s going on in the newly rewritten code shown in Listing 16 is a simple check on the incoming $user_id argument. If the user ID is greater than zero, use a query to pull out any user IDs being followed by that ID. Use the implode() function to turn that array of values into a comma-separated list. Then insert that string — which looks something like and id in (1,2,3. n) — into the existing SQL query, thereby limiting the user listing to those the user is following.

    Listing 16. Rewritten code to limit the list of users pulled by the query

    Next, you add the code shown in Listing 17 to the home page to display all those followed users.

    Listing 17. Revising index.php to show users being followed

    Adding posts from other users

    To add posts from other users to a user’s timeline, you need only reuse some previously written code. For example, you already know how to get a list of users that the current user is following. You also know how to pull out all the posts by a certain user. You merely need to tweak the latter function to be able to accept a list of users rather than a single user.

    All you need to do now is move the first function higher up in the index.php file so you can take advantage of it sooner, then use the list of user IDs you get from the function to pull out a limited number of posts from their timelines — you don’t want all of them, just five or so. Remember, you want to place the posts by those other users in reverse-chronological order (most recent on top).

    First things first: Add a limit argument to the show_posts() function, setting it to zero by default. If that limit goes higher than zero, you add a limit to your SQL statement for retrieving posts. The other thing you do is make the $userid argument into an array you parse into a field of commas, which you then pass to the SQL statement. This is a bit of extra work, but it pays off handsomely because all of the posts will then display in reverse order, as you can see.

    Listing 18. Updating show_posts() to accept an array of users

    Now go back to the index.php file and work on passing in more than one user ID to show_posts() , as shown below. It’s a simple thing, really, since you already gathered the users. You just pull out the keys using array_keys() and add your session variable to the mix. At minimum, this sends in an array with one value in it (the currently logged-in user’s ID). At most, it sends the logged-in user’s ID and the ID of every user that user is following.

    Listing 19. Passing in an array of users to the show_posts() function


    In this article, you learned how to build a simple PHP-based microblogging service similar to Twitter and the Facebook status update tool. With any luck, you can take what you learned here, add it to your application, and tailor it to your needs.

    Downloadable resources

    • Get yourself a Twitter account.
    • Sign up for Mr. Tweet to get suggestions for whom to follow on Twitter.
    • Here’s the list of 15 Twitter resources.
    • is the central resource for PHP developers.
    • Check out the «Recommended PHP reading list.»
    • Browse all the PHP content on developerWorks.
    • Follow developerWorks on Twitter.
    • Expand your PHP skills by checking out IBM developerWorks’ PHP project resources.
    • Using a database with PHP? Check out the Zend Core for IBM, a seamless, out-of-the-box, easy-to-install PHP development and production environment that supports IBM DB2 V9.


    Sign in or register to add and subscribe to comments.

    PHP: getting latest Tweets and displaying them in HTML

    This post shows how you can get the latest Tweets from a Twitter account and displaying them in HTML, with links for all the entities (urls, hashtags, user mentions, etc).

    Create a Twitter App

    You must create a Twitter application and get a couple of tokens that will be used later. You should be able to create an application from here:

    Get latest Tweets

    For retrieving the latest tweets from the Twitter APIs we’ll use the J7mbo’s TwitterAPIExchange library (great and very simple). Other libraries are listed here:

    The API we need to use is the statuses/user_timeline and we’ll get the JSON returned by this API converted as PHP object. You can use the library you prefer, provided that you can get the PHP object from the JSON returned from the Twitter’s API.


    This is a simple code that use the TwitterAPIExchange library and gets the latest tweets from our Twitter account named netglooweb:

    Inside the $user_timeline we’ll have the API response as PHP object, containing the latest tweets.

    Format tweets in HTML with TwitterTextFormatter

    The main problem with each library that wraps the Twitter’s APIs is that the returned tweets are pure text and they don’t provide the HTML formatted text.

    In order to get the tweet’s text formatted in HTML, with links for all the tweet’s entities, we use the PHP class Netgloo\TwitterTextFormatter . You can download it from here.

    In contrast to commons methods, such class uses the Twitter’s entities retrieved from the api response, instead of replacing URLs and entities using regular expression that is an error prone method.

    Usage example

    Referring the code listed before, we can use the TwitterTextFormatter class in this way:

    Try it yourself

    You can get the code used in this post from our Github repository and try it by yourself:

    Appendix A: some useful fields from Twitter API

    The following are some useful fields you can get from the tweet object returned by the API (e.g. the $user_tweet object in the code above). For most of them the name is self-descriptive:

    • created_at
    • retweet_count
    • entities->media : an array of all the media related to this tweet (I think for now it’s used only for the tweet’s attached photo).
    • user->name
    • user->screen_name
    • user->profile_image_url
    • retweeted_status : if this properties is set (check it with the PHP function isset ) the current tweet is a “re-tweet” (and the fields below are available).
    • retweeted_status->user->name
    • retweeted_status->user->screen_name
    • retweeted_status->retweet_count


    This code will print also the tweet’s image:

    Appendix B: installing PHP curl

    PHP curl is a requirement for using PHP wrappers for the Twitter APIs.

    On Ubuntu 14.04 you can install it with:

    Илон Маск рекомендует:  Postgres95 архитектура субд postgres95
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL