PHP - очень быстро изменить строку - PullRequest
1 голос
/ 13 января 2012

Хорошо, пытаемся изменить строку следующим образом:

[topic]=2[board]=2

, чтобы вернуть это вместо:

[topic][board]=2

В описанной выше ситуации я буду работать со строковой переменнойравный [topic] и другой строковой переменной, равной [topic]=2[board]=2

Но это необходимо сделать для всех ситуаций ... Далее следуют следующие примеры:

profile[area]=account[u]=1

должно возвращать это:

profile[area][u]=1

В описанной выше ситуации я буду работать со строковой переменной, равной profile, и другой строковой переменной, равной profile[area]=account[u]=1

Другой пример:

moderate[area]=groups[sa]=requests

Должно быть так:

moderate[area][sa]=requests

В описанной выше ситуации я буду работать со строковой переменной, равной moderate, и другой строковой переменной, равной moderate[area]=groups[sa]=requests

* 1030.* И еще:
[board]=1

Должно возвращаться:

[board]=1

В описанной выше ситуации я буду работать со строковой переменной, равной [board], и другой строковой переменной, равной[board]=1

По сути, то, что ему нужно, это избавиться оттекст между ТОЛЬКО текстом, который заключен в квадратные скобки только первой и второй скобок (если существует только вторая скобка).Это не должно влиять на третьи, четвертые, пятые скобки.Только первые и вторые скобки.

Может кто-нибудь помочь мне с этим?

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Вот регулярное выражение, которое работает:

(?<=\])\=[^\[\r\n]*(?=\[)

http://regexr.com? 2vn71

Возможно, что \ r \ n в PHP нужно заменить на \ Z, так как вы будете иметь дело не с переносами строк, а с концом строки.

Итак, что-то вроде:

preg_replace("/(?<=\])\=[^\[\Z]*(?=\[)/", "", $target);

Edit:

Вот подробное описание того, что здесь происходит:

(?<-\]) Убедитесь, что перед совпавшим выражением есть [ символ

\= Соответствует = символу

[^\[\Z]* Совпадение всех символов, пока вы не найдете [ или конец строки (\Z)

(?=\[) Убедитесь, что есть [ после соответствующего выражения

0 голосов
/ 13 января 2012

Еще одно регулярное выражение, предназначенное для использования с preg_replace()

preg_replace('/^([a-z]+)?(\[[a-z]+\])(.*)(\[(.*))$/Uis', '$1$2$4', $yourData);
...