たくさんのテキストを調べて、テキスト形式のURLを探し、それらをhtmlaに変換する小さな関数があります。
例えば
normal text lipsum etc http://www.somewebsitelink.com lipsum lipsum
になります:
normal text lipsum etc <a href="www.somewebsitelink.com">http://www.somewebsitelink.com</a> lipsum lipsum
私の機能は次のとおりです。
function linkify($text)
{
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a target="_blank" href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a target="_blank" href="http://\\2">\\2</a>', $text);
return $text;
}
これはすべて問題なく動作しますが、この関数を使用してhtmlを印刷すると、限られた幅のスペースにあり、リンクがスペースに収まらないほど大きくなり、オーバーフローが発生することがあります。
私は2つのことをどうやってやるのだろうかと思っています:
a。テキストから不要なものを削除します。つまり、「http://」で終わります。
<a href="http://www.somewebsitelink.com">www.somewebsitelink.com</a>
と
b。テキストが20文字を超える場合は、その後のすべてを切り取り、いくつかのドットを挿入します。例えば:
<a href="http://www.somewebsitelink.com">www.somewebsitelin...</a>
正規表現を使用せずにこれを実行する必要があるのではないかと思いますが、正規表現についての私の理解はかなり限られています。