人の名前が二重括弧で囲まれたコンテンツのブロックがあります。例えば:
Lorem ipsum dolor sit amet, consectetur [[Jane Doe]] adipisicing elit, sed do eiusmod tempor incididunt ut labe et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud execitation ullamco [[John Doe]] laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Exceptioneur sint occaecat cupidatat non proident, [[Susan Van-Something]] sunt in culpa qui office deserunt mollit anim id est labum.
二重括弧から名前を取り出し、コンテンツ内のそれらを以下のフォーマットに従ったリンクに置き換える正規表現を作成しようとしています:
<a href='http://www.example.com/jane-doe/'>Jane Doe</a>
URL では、スペースがハイフンに変換され、名前全体が小文字になります。
これまでのところ、私は持っています
// the filter function
function names_brackets( $content ) {
// regex replace the names with links
// return the content
return preg_replace_callback( "/^([[[A-Za-z0-9- ]+?]])/" , "names_callback" , $content);
}
// callback function to allow post processing
function names_callback ( $matches ) {
$find = array(' ', '[', ']');
$replace = array('-', '', '');
return '<a href="http://www.example.com/' . strtolower( str_replace($find, $replace, $matches[1]) ) . '">' . str_replace(']', '', str_replace('[', '', $matches[1])) . '</a>';
}
残念ながら、正規表現に問題があると思われます。どんな助けでも大歓迎です。