2012-03-18 1 views
0

理解にpreg_replace:困難私は小さな検索を使用して、私のWordPressサイトのいずれかのスニペットを交換しています現在

if (! function_exists('cor_remove_personal_options')) { 
    function cor_remove_personal_options($subject) { 
    $pattern = '#<h3>Personal Options</h3>.+?/table>#s'; 
    $subject = preg_replace($pattern, '', $subject, 1); 
    return $subject; 
    } 

    function cor_profile_subject_start() { 
    ob_start('cor_remove_personal_options'); 
    } 

    function cor_profile_subject_end() { 
    ob_end_flush(); 
    } 
} 
add_action('admin_head-profile.php', 'cor_profile_subject_start'); 
add_action('admin_footer-profile.php', 'cor_profile_subject_end'); 

私は開口部の正確な機能に疑問を抱いたpreg_replace比較的新しいビーイングと終了番号記号##s

誰かが私にこのことを説明できるかどうか疑問に思っていましたか?

答えて

0

開閉記号または#を使用できます。あなたは#を使用する場合は、スラッシュは特殊文字として解釈されることはありませんので、これはあまりにもスラッシュ文字をエスケープ有効になります。

'/<h3>Personal Options<\/h3>.+?\/table>/s' 

/秒または#はそのいずれかのドットをPHPに伝える、修飾子を意味し、正規表現では、改行を含む任意の文字として評価されます。

1

これらの記号は、置換パターンの開始と終了を決定します。 "s"は修飾語ですhttp://php.net/manual/en/reference.pcre.pattern.modifiers.php

+0

ありがとうございました。私は今、修飾子の機能を幾分理解しています。番号記号については、正確に使用されたときを教えてください。つまり、以前は 'preg_replace'を使用していましたが、これと以前のスニペットとの間に何らかの相違点があるのを見るのが難しくなりました。 –

関連する問題