2017-09-29 10 views
1

PHPでリンクに自動的にテキストを書式設定しようとしていますが、長い文字列を最大文字数に整形しようとしています。また、出力されたテキストから「http(s)」も削除します。URLをPHPにリンクして出力URLを整える

blah blah <a href="http://example.com/some-long-slug-goes-here">example.com/some-long-sl...</a> foo何とか何とかのfoo

がここpreg_replace解決策を見つけた:

blah blah http://example.com/some-long-slug-goes-here foo

はに変換する必要があり How do I linkify urls in a string with php?が、私は私のニーズにそれを編集することができないんです。

$string = preg_replace(
    "~[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]~", 
    "<a href=\"\\0\">\\0</a>", 
    $string 
); 
+0

@chris85が言いましたが、これを置換え「\1」(明らかにエスケープしたもの) – ctwheels

答えて

2

プロトコルの後にキャプチャグループを作成します。

$string = preg_replace(
    "~[[:alpha:]]+://([^<>[:space:]]+[[:alnum:]/])~", 
    "<a href=\"\\0\">\\1</a>", 
    $string 
); 

を、その後\1がプロトコルなしでURLになります。テキストの制限については、CSSを使用することをお勧めします。Setting a max character length in css

+1

を使用してテキストサイズを制限することは非常に良い考えです。 –

+0

ありがとう、これが修正されます! :)「www。」も削除することは可能でしょうか? – pax

+0

はい、プロトコルの後でキャプチャグループの前に 'www.'を置くと、オプションのものが必要になりますので、' [[alpha:]] +://(?:www \。) ? ' – chris85

関連する問題