如何替换两个字符串之间的字符

时间:2017-10-12 20:21:07

标签: php

我的文字如下:

$text = 'number="1" body="Are you "special" man?" name="man" code="1"
         number="2" body="Hi said "HaHaHa""?" name="man" code="2"'

我正在努力,但没有任何成功。我需要在正文部分中将所有"替换为#。有人可以帮我吗?

结果应该是:

$text = 'number="1" body="Are you #special# man?" name="man" code="1"
         number="2" body="Hi said #HaHaHa#?" name="man" code="2"'

2 个答案:

答案 0 :(得分:2)

具有preg_replacepreg_replace_callback功能的复杂解决方案:

$text = 'number="1" body="Are you "special" man?" name="man" code="1"
         number="2" body="Hi said "HaHaHa""?" name="man" code="2"';

$text = preg_replace_callback('/(body=")(.*)(?=" name)/', function($m) {
    return $m[1] . preg_replace('/"+/', '#', $m[2]);
}, $text);

print_r($text);

输出:

number="1" body="Are you #special# man?" name="man" code="1"
         number="2" body="Hi said #HaHaHa#?" name="man" code="2"

答案 1 :(得分:1)

我和RomanPerekhrest的路线相同:

preg_match_all('/body="(.*?)" /', $text, $matches);

foreach($matches[1] as $find) {
    $text = str_replace($find, str_replace('"', '#', $find), $text);
}

获取所有body="something"并替换"内的所有""。将原始body="something"替换为新原始文件。