2011-01-04 3 views
-1
string = "(KEY)anything (KEY)anything (A)anything (KEY)anything"; 

результат должен бытьКак заменить строку с использованием регулярных выражений

string = "<p>anything</p> <p>anything</p> (A)anything <p>anything</p>"; 
+3

Что вы пробовали? Потому что, как сейчас, вы просите нас написать свой код для вас. –

+0

Мне просто нужен синтаксис Regex – faressoft

+0

Является ли исходная строка действительно html? Если да, рассмотрите синтаксический анализатор html. – marcog

ответ

1

Заменить \(KEY\)(\w+) с <p>$1</p>, или любой другой эквивалент PHP обозначения.

Предполагается, что границы являются границами слов (ничего, кроме 0-9A-Za-z_).

+0

Вы должны поместить \\ (KEY \\) (\ w +) – faressoft

+0

@faressoft - ')' не требует экранирования, за исключением случаев, когда предшествует unescaped '('. Уменьшение числа \ является хорошим, особенно когда им требуется двойное экранирование в строковых литералах. – OrangeDog

+0

Это вообще не так. Python, например, будет жаловаться на несбалансированную скобку. –

2
$result = preg_replace('/\(KEY\)(\w+)/', '<p>\1</p>', $subject); 

будет работать на вашем примере.

Если anything может быть больше, чем одно слово, и определяется как «что-либо после того, как (KEY) и до следующего открывающую скобку», то вы можете использовать

$result = preg_replace('/\(KEY\)([^(]+)/', '<p>\1</p>', $subject); 
0

Отъезд preg_replace (http://php.net /manual/en/function.preg-replace.php)

$pattern = '\(KEY\)(\w+)\s'; 
$replacement = '<p>$1</p>'; 
$string = preg_replace($pattern,$replacement,$string); 

Нечто подобное должно работать.

Смежные вопросы