如何替换文本,除非它在PHP中的两个标记之间? [英] How to replace text except when it's between two tags in PHP?

查看:36
本文介绍了如何替换文本,除非它在PHP中的两个标记之间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个语句替换要在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或使用正则表达式执行此操作?

推荐答案

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

这篇关于如何替换文本,除非它在PHP中的两个标记之间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆