Базовое регулярное выражение для соответствия тегам стиля BBCode будет выглядеть примерно так:
preg_match('/\[[\/]?[A-Za-z0-9]+\]/', $row->xyz)
Это будет соответствовать всему, что начинается с «[», заканчивается «]» и имеет один или несколькобуквенно-цифровые символы в середине (с необязательным «/» для конечного тега.) Обратите внимание, что у него есть недостатки - например, если у вас есть вложенный «[...]» в большем «[...]»,это только захватит внутренний.(т.е. [foo [bar]] вернет только «[bar]».)
Пример:
<?php
$regexp = '/\[[\/]?[A-Za-z0-9]+\]/';
$testString = '[i]An italic string with some [b]bold[/b] text.[/i]';
preg_match_all($regexp, $testString, $result);
print_r($result);
?>
Результат:
array(1) {
[0]=> array(4) {
[0]=> string(3) "[i]"
[1]=> string(3) "[b]"
[2]=> string(4) "[/b]"
[3]=> string(4) "[/i]"
}
}
Конечно, яЯ не уверен, что это то, что вы на самом деле имеете в виду , что вы хотите сделать, но это то, что вы говорите, что хотите сделать.Вы уверены, что хотите найти BBCodes, а не найти строки, заключенные в них?