2016-10-15 5 views
2

私はPHPで2つの関数、trimmer($string,$number)toUrl($string)を持っています。例えば、toUrl()で抽出されたURLを20文字に整えたいとします。 https://www.youtube.com/watch?v=HU3GZTNIZ6Mからhttps://www.youtube.com/wa...prer_replace()はPHPと一致します

function trimmer($string,$number) { 
    $string = substr ($string, 0, $number); 
    return $string."..."; 
} 

function toUrl($string) { 
    $regex="/[^\W ]+[^\s]+[.]+[^\" ]+[^\W ]+/i"; 
    $string= preg_replace($regex, "<a href='\\0'>".trimmer("\\0",20)."</a>",$string); 
    return $string;  
} 

へしかし、問題があることは、試合復帰\\0ない簡単に機能trimmer()でトリミングすることができ$urlのような変数の値です。

substr()\\0にどうやって適用するのですか?substr("\\0",0,20)?何をしたい

+0

あなたの質問は何も分かりません。 – Rizier123

+0

ありがとうございます。それが追加されました。 – Max

+1

あなたは 'preg_replace_callback()'を見たいと思っています。 'preg_replace()'を使うと、すでに分かっているように動かないでしょう。 – Rizier123

答えて

2

preg_replace_callbackです:

  1. あなたは構文エラーを持って、 '$の正規表現は、'(仕事に行くされていません。

    function _toUrl_callback($m) { 
        return "<a href=\"" . $m[0] . "\">" . trimmer($m[0], 20) ."</a>"; 
    } 
    function toUrl($string) { 
        $regex = "/[^\W ]+[^\s]+[.]+[^\" ]+[^\W ]+/i"; 
        $string = preg_replace_callback($regex, "_toUrl_callback", $string); 
        return $string; 
    } 
    

    も(サイドノートでは、あなたの質問にWRT)ことに注意してくださいそれらは一重引用符で囲まれた文字列のvar名に取って代わるものではありません)

  2. URLにマッチするように正規表現を探したい場合は、クイック検索でたくさん見つけることができます。
  3. あなたは一致をhtmlspecialchars()で実行することができます(主に "&"の問題ですが、残りの文字列をエスケープする方法によって異なります)。

EDIT:Askerによってリクエストされたより多くのPHP 4をフレンドリーにしました。

+0

あなたは間違いなく正しいと思われます。私はPHP 4.0.xで作業しています。このエラーを返します。構文エラーです。予期しないT_FUNCTIONを返します。 – Max

+0

PHP 4は本当に時代遅れですが、機能するはずです。PHP 4をもっとフレンドリーにするために私の答えを編集しています。 – Johnny

+0

@Max PHP 4歳は16歳です!あなたは本当にあなたのPHPのバージョンをアップグレードしたい。 – Rizier123

関連する問題