URLやメールアドレスに自動でリンクを貼ってくれるヘルパー
開発環境:CakePHP2.5.1
文章の中に書かれたURLやメールアドレスにリンクが貼りたい時に便利なヘルパーがあります。
URLにリンクを貼るautoLinkUrls
まずはURLに自動でリンクを貼る方法ですが、autoLinkUrlsを使います。
<?php $text = 'CakePHPはPHP用の高速開発フレームワークです。http://cakephp.jp/ アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。'; echo $this->Text->autoLinkUrls($text); ?>
結果は、
CakePHPはPHP用の高速開発フレームワークです。<a href="http://cakephp.jp/">http://cakephp.jp/</a> アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。
メールアドレスにリンクを貼るautoLinkEmails
メールアドレスにリンクを貼るにはautoLinkEmailsを使います。
<?php $text = 'CakePHPはPHP用の高速開発フレームワークです。 info@cakephp.jp アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。'; echo $this->Text->autoLinkEmails($text); ?>
結果は、
CakePHPはPHP用の高速開発フレームワークです。 <a href="mailto:info@cakephp.jp">info@cakephp.jp</a> アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。
autoLinkUrlsもautoLinkEmailsもやってくれるのがautoLink
URLもメールアドレスもリンクを貼りたいとい時に使えるのがautoLinkです。
<?php $text = 'CakePHP( http://cakephp.jp/ )はPHP用の高速開発フレームワークです。 info@cakephp.jp アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。'; echo $this->Text->autoLink($text); ?>
結果は、
CakePHP( <a href="http://cakephp.jp/">http://cakephp.jp/</a> )はPHP用の高速開発フレームワークです。 <a href="mailto:info@cakephp.jp">info@cakephp.jp</a> アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。
リンクが貼られたURLと貼られていないURLが混在する場合の対処方法
一部の文字はリンクが貼られている文章にautoLinkを使うと最初からリンクが貼られたテキストのHTMLタグがそのまま表示されてしまいます。
そこで、一旦HTMLタグを除去することですべてのURLやメールアドレスにリンクを貼ることができます。
<?php $text = 'CakePHP( http://cakephp.jp/ )はPHP用の高速開発フレームワークです。 <a href="mailto:info@cakephp.jp">info@cakephp.jp</a> アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。'; echo $this->Text->autoLink(strip_tags($text)); ?>
結果は、
CakePHP( <a href="http://cakephp.jp/">http://cakephp.jp/</a> )はPHP用の高速開発フレームワークです。 <a href="mailto:info@cakephp.jp">info@cakephp.jp</a> アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。