str_replace кроме / else между двумя тегами - PullRequest
0 голосов
/ 17 февраля 2011

Мне нужно заменить оператор в php (используя str_replace или что-то еще).У меня есть это предложение:

"the sun is yellow when the <wrong>red sun is not yellow</wrong>"

Я хочу это:

"the apple is yellow when the <wrong>red sun is not yellow</wrong>"

Так что мне нужно заменить слово, кроме двухспециальные теги (<wrong и </wrong>).Как это сделать с str_replace или с помощью регулярных выражений?

Немного сложнее, не так ли?Я уже много часов искал ... Понятия не имею ... Есть идеи?

Спасибо за решение, подсказку или помощь

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Если строка мала, почему бы не использовать explode(), чтобы взорвать ее в тегах, и заменить строки на нужные фрагменты, а затем снова присоединиться к нему? Или попробуйте DomDocument:

<?php

$str = "the sun is yellow when the <wrong> This is also red sun not yellow red sun is not yellow some words </wrong> and here is 
yellow sun outside <wrong> , now yellow sun inside </wrong>";

$origArr = array("sun");
$replaceArr = array("apple");
$str = str_replace($origArr,$replaceArr,$str);

$domElem = new DOMDocument();
$domElem->loadXML("<temp_tag>".$str."</temp_tag>");

$nodes = $domElem->getElementsByTagName('wrong');


$index = 0;
while($nodes->item($index)->nodeValue)
  {
    $nodes->item($index)->nodeValue = str_replace($replaceArr,$origArr,$nodes->item($index)->nodeValue);
    $index++;
  }

echo $domElem->saveHTML();

/* remove the <temp_tags> ....*/

?>

Смотрите здесь: http://codepad.org/T5o3shB4

0 голосов
/ 17 февраля 2011

разница в солнце -> яблоко во втором слове.для этого примера str_replace ('sun', 'apple', $ text, 1) сделает только первый

...