2017-10-24 24 views
-2

エラーを使用します。減価償却PHP非推奨:にpreg_replace():/ e修飾子は廃止され、代わりにpreg_replace_callback

if(preg_match('/([^:]+): (.+)/m', $field, $match)) { 
      $match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1]))); 

どうpreg_replace_callback代わりにpreg_replaceの使用しますか?私はpreg_replaceを置き換えようとしましたが、別のエラーが発生しました。

PHP Warning: preg_replace_callback(): Requires argument 2, 'strtoupper("\0")', to be a valid callback in

答えて

0

実際のコールバックを使用する必要があります。次のことを試してみてください。

if(preg_match('/([^:]+): (.+)/m', $field, $match)) { 
      $match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e', function($matches){return strtoupper("\0");}, strtolower(trim($match[1]))); 

コールバックは、上記のような匿名関数や文字列として関数の名前のいずれかになります。

注:\eを使用する場所\e修飾子はで非推奨とのとして除去した、あなたはどこでも、preg_replace_callbackを使用する必要があります。ここでそれについてもっと学んでください。 Can someone explain the /e regex modifier?

+0

おかげで、別のエラーメッセージガット:PHPの警告:preg_replace_callback():修飾子/ eはちょうどあなたの正規表現から '/ e'を削除 – azarudeen

+0

で置換コールバックで使用することはできません。あなたは 'preg_replace_callback()'を使っているので、その必要はありません。 – mega6382

+1

'\ e'は推奨されていません。詳細はこちらをご覧ください。 PHP警告:preg_replace_callback():https://stackoverflow.com/questions/16986331/can-someone-explain-the-e-regex-modifier – mega6382

1

preg_replace_callback()の正確なコールバックを指定する必要があります。 preg_replace_callbackについての詳細を確認してください()ここで :preg_replace_callbackpreg_replace_callback

if(preg_match('/([^:]+): (.+)/m', $field, $match)) { 
      $match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e', function ($matches) { 
      return strtoupper("\0"); 
     }, strtolower(trim($match[1]))); 
+0

おかげで、他のエラーメッセージをガット/ E修飾子で置換コールバックで使用することができません – azarudeen

0

署名をPHP documentationから:

mixed preg_replace (mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]])

をあなたは2番目の引数としてコールバック関数を渡す必要があります。

$html = $_POST['html']; 

    // uppercase headings 
    $html = preg_replace_callback(
    '(<h([1-6])>(.*?)</h\1>)', 
    function ($m) { 
     return "<h$m[1]>" . strtoupper($m[2]) . "</h$m[1]>"; 
    }, 
    $html 
); 
関連する問題