私の株式市場のチャットでは、すべての特定の文字列パターンを html コードに置き換えたいと考えています。たとえば、「b $goog 780」と入力すると、この文字列を次のように置き換えます。
Buy <a href="/stocks/goog">$goog</a> at 780
preg_replace でこの特定のタスクを実行するにはどうすればよいですか?
私の株式市場のチャットでは、すべての特定の文字列パターンを html コードに置き換えたいと考えています。たとえば、「b $goog 780」と入力すると、この文字列を次のように置き換えます。
Buy <a href="/stocks/goog">$goog</a> at 780
preg_replace でこの特定のタスクを実行するにはどうすればよいですか?
$cmd='b $goog 780';
if(preg_match('/^([bs])\s+?\$(\w+?)\s+?(.+)$/i',$cmd,$res))
{
switch($res[1])
{
case 'b': $cmd='buy';break;
case 's': $cmd='sell';break;
}
$link=$cmd.' <a href="/stocks/'.$res[2].'">'.$res[2].'</a> at '.$res[3];
echo $link;
}
$stocks = array('$goog' => '<a href="/stocks/goog">$goog</a>',
'$apple' => '<a href="/stocks/apple">$apple</a>');
// get the keys.
$keys = array_keys($stocks);
// get the values.
$values = array_values($stocks);
// replace
foreach($keys as &$key) {
$key = '/\b'.preg_quote($key).'\b/';
}
// input string.
$str = 'b $goog 780';
// do the replacement using preg_replace
$str = preg_replace($keys,$values,$str);