Во-первых, вам нужно убрать квадратные скобки, поскольку они являются специальными символами в PCRE:
'/\[demo\s*.*?\]/i';
Во-вторых, звучит так, как будто вы хотите что-то сделать с цифрой в конце, поэтому вы захотите сделать это, используя скобки:
'/\[demo\s*.*?=(\d+)\]/i';
Скобки захватят \d+
и сохранят его в качестве ссылки. \d+
будет соответствовать только строке чисел.
Наконец, звучит так, как будто вам нужно использовать preg_replace_callback
, чтобы выполнить специальную функцию для совпадений, чтобы получить нужную строку:
function replaceMyStr($matches)
{
$strNum = array("1"=>"first", "2"=>"second", "3"=>"third"); // ...etc
return "This is the Content of my ".$strNum($matches[1])." Category.";
// $matches[1] will contain the captured number
}
preg_replace_callback('/\[demo\s*.*?=(\d+)\]/i', "replaceMyStr", "[demo category=1]");