当前位置: 代码迷 >> PHP >> php读取或批改配置型文件中指定关键字的值
  详细解决方案

php读取或批改配置型文件中指定关键字的值

热度:193   发布时间:2013-01-23 10:44:49.0
php读取或修改配置型文件中指定关键字的值
想从一个linux中的配置文件中读取或修改指定的信息数值,下列是文件的一小部分,大概占全部文件的20分之一,如我想修改GSM.MNC的值为09,或者读取GSM.MNC的值如何操作,不要用读取指定行的方法,因为文件可能添加或者删除信息,行数不确定



# Network and cell identity.

# Network Color Code, 0-7
# Also set GSM.NCCsPermitted later in this file.
GSM.NCC 0
# Basesation Color Code, 0-7
GSM.BCC 2
# Mobile Country Code, 3 digits.
# MCC MUST BE 3 DIGITS.  Prefix with 0s if needed.
# Test code is 460.
GSM.MCC 460
# Mobile Network Code, 2 or 3 digits.
# Test code is 00.
GSM.MNC 08
# Location Area Code, 0-65535
GSM.LAC 1000
# Cell ID, 0-65535
GSM.CI 10

# Network "short name" to display on the handset.
# This is optional, but must be defined if you also want to
# send current time-of-day to the phine.
GSM.ShortName RZ8004
$optional GSM.ShortName

# A boolean telling whether or not to show country initials with the name.
GSM.ShowCountry
$optional GMS.ShowCountry

# Assignment type for call setup.
# The default is early assignment.
# If defined, this will cause us to use very early assignment instead.
GSM.VEA
$optional GSM.VEA

------解决方案--------------------
<?PHP
$string = '# Network Color Code, 0-7
# Also set GSM.NCCsPermitted later in this file.
GSM.NCC 0
# Basesation Color Code, 0-7
GSM.BCC 2
# Mobile Country Code, 3 digits.
# MCC MUST BE 3 DIGITS.  Prefix with 0s if needed.
# Test code is 460.
GSM.MCC 460
# Mobile Network Code, 2 or 3 digits.
# Test code is 00.
GSM.MNC 08';

$pattern = '/GSM\.MNC (\d+)/U';
$replacement = '99999';
echo preg_replace($pattern, $replacement, $string);

------解决方案--------------------
echo preg_replace('/(?<=GSM\.MNC)\s+\d+/m', ' 09', $string);
  相关解决方案