仅替换文件格式为preg_replace的特定组 - php

我有带有内容的txt文件:

fggfhfghfghf

$config['website'] = 'Olpa';


asdasdasdasdasdas

和PHP脚本,用于替换文件中的preg_replace:

write_file('tekst.txt', preg_replace('/\$config\[\'website\'] = \'(.*)\';/', 'aaaaaa', file_get_contents('tekst.txt')));

但这并不完全符合我的要求。

因为此脚本替换了整个匹配项,并且在更改后看起来像这样:

fggfhfghfghf

aaaaaa


asdasdasdasdasdas

那很不好。

我只想不更改整个比赛$config['website'] = 'Olpa';,而是只更改此Olpa

仅替换文件格式为preg_replace的特定组 - php

如您所见,它不属于匹配信息的第2组。

我想要的只是更改此Group2。一件具体的事情。

最终在脚本之后它将如下所示:

fggfhfghfghf

$config['website'] = 'aaaaaa';


asdasdasdasdasdas

参考方案

您需要将preg_replace更改为

preg_replace('/(\$config\[\'website\'] = \').*?(\';)/', '$1aaaaaa$2', file_get_contents('tekst.txt'))

这意味着捕获您需要保留的内容(然后使用向后引用来恢复文本),然后匹配您需要替换的内容。

请参见regex demo。

图案细节:

(\$config\[\'website\'] = \')-组1捕获文字$config['website'] = '子字符串(后来被$1引用)
.*?-除换行符以外的任何0+个字符都尽可能少
(\';)-第2组:一个',后跟;(后来称为$2

如果您的aaa实际上以数字开头,则需要${1}后向引用。

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

将大字符串分成多个小字符串-PHP - php

我从数据库中获取了一个长字符串,我需要对其进行解析,以使其不包含一个大字符串,而是多个,其中每个字符串都有2个字符。让我们以示例为例:我连接到表,获取此字符串:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,之后,我必须对字符串进行解析,因此:B1 C1 F4 G6 H4 I7 J1 J8 L5 O6 P2 Q1 R6 T5 U8 V1…