【发布时间】:2012-10-20 00:56:48
【问题描述】:
在 PHP 中,我需要帮助来替换某些标识符之间的文件中的某些内容。
例如:
abcde
-BEGIN-
bcdef
-END-
cdefg
-BEGIN-
doo wah diddy
-END-
defgh
假设我需要将“d”字符替换为“z”,但仅在-BEGIN- 到-END- 部分之间。结果将是:
abcde
-BEGIN-
bczef
-END-
cdefg
-BEGIN-
zoo wah zizzy
-END-
defgh
我尝试preg_match_all 成功识别 -BEGIN- 到 -END- 部分:
$text = file_get_contents($file);
preg_match_all('#-BEGIN-.*?-END-#s', $text, $matches);
但无法弄清楚如何替换这些匹配项中的某些内容并返回包括正确替换在内的整个文本。
有什么想法吗?
【问题讨论】:
-
你试过
preg_replace('/a([^(\-BEGIN\-|\-END\-)])/', 'z$1',$text)吗?
标签: php regex preg-match-all