1

我在 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或使用正则表达式来做到这一点?

4

2 回答 2

1

如果字符串很小,为什么不使用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

于 2011-02-17T12:05:16.850 回答
0

区别在于第二个单词中的 sun -> apple。对于那个例子 str_replace('sun', 'apple', $text, 1) 只会做第一个

于 2011-02-17T12:02:52.140 回答