PHP подразделить строку, которая содержит переменные теги - PullRequest
0 голосов
/ 22 февраля 2012

Всем доброго времени суток,

У меня есть предустановленная ситуация, которую нельзя изменить, которая вращается вокруг части текста html (тела страницы) и некоторых настраиваемых пользователем тегов внутри этого тела.

Проблема, которая очень похожа на шаблон, но связана с ситуацией с источником без рефакторинга, состоит в том, что мне нужно разделить исходное тело на

html part 1
tag1
html part 2
tag2
html part 3
tag3

и так далее,например, из

<body>
<b>This is my first line</b> And this is <b>%%tag one%%</b> but of course it
doesn't end here %%second tag%%
Additionally %%second tag%% tags can be repeated inside the body.

In fact, %%tag one%% or even %%tagthree%%
</body>

В идеале, я должен получить массив:

[0] = "<body>
    <b>This is my first line</b> And this is <b>"
[1] = "%%tag one%%"
[2] = "</b> but of course it
    doesn't end here "
[3] = "%%second tag%%"
[4] = "Additionally "
[5] = "%%second tag%%"
[6] = " tags can be repeated inside the body.

    In fact, "
[7] = "%%tag one%%"
[8] = " or even "
[9] = "%%tagthree%%"
[10] = "
    </body>"

Теги - это простые текстовые метки (допустимый пробел, _ и -), заключенные, например, в%% %%first tag%%

Я понимаю, что существует множество различных решений, но, поскольку мне нужна максимально возможная производительность, мне нужны указания, что нужно попробовать, а что избежать.Кроме того, мне интересно, есть ли в php какая-то функция для такого рода дел.

Надеюсь, некоторые из вас уже сталкивались с чем-то подобным, что слишком сложно для идеального решения, для моих текущих навыков синтаксического анализа.

Спасибо

1 Ответ

1 голос
/ 22 февраля 2012

тупой путь:

$parts = explode("%%", $str);
for($i=1;$i<count($parts);$i+=2) {
    $parts[$i] = "%%".$parts[$i]."%%"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...