Как я могу скопировать эту строку при внесении этих изменений - PullRequest
2 голосов
/ 12 января 2011

Я пытаюсь выполнить строковые манипуляции с этой строкой.Я имею в виду алгоритм, но не уверен насчет синтаксиса php.

<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" />

Между каждой начальной и конечной парами < и /> строка my="t" может существовать или не существовать (в этом примере она существует только в третьей строке).Если его не существует, я хочу скопировать весь < /> как есть.Если он существует, я хочу добавить <something /> после него.Поэтому я хочу, чтобы эта строка выглядела следующим образом

<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" /><something />

Что усложняет ситуацию, так это то, что my="t", похоже, не имеет стандартной позиции, она может находиться где-то между < />.Любые предложения, как это сделать с php?Я думаю, регулярное выражение

Ответы [ 2 ]

1 голос
/ 12 января 2011

Попробуйте с:

$l = array('<who    not="p" what="v" />','<cares  i="n"   want="m" />','<target my="t"  what="iwant" />');

foreach ($l as $str) {
  $str = preg_replace('#(<.*?my="t".*? />)#', "$1<something />", $str);
  echo $str,"\n";
}

Выход:

<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" /><something />
1 голос
/ 12 января 2011

Сначала я думаю, что вы можете использовать регулярное выражение или просто комбинацию substr & strpos для разделения <... />

Вы можете использовать strstr , чтобы определить, появляется ли my="t" в строке или нет, затем выполнить соответствующее действие.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...