想从一个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

解决方案 »

  1.   

    <?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);
      

  2.   

    非常感谢您的回复,有点小问题  就是我要修改的是“GSM.MNC 08”后面的值08,改为09,最终效果应该是“GSM.MNC 09”
      

  3.   

    echo preg_replace('/(?<=GSM\.MNC)\s+\d+/m', ' 09', $string);
      

  4.   

     preg_match('/GSM\.MNC\s+(\d+)/m', $string,$m);
     echo $m[1];
      

  5.   

    <?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 = '09';
    echo preg_replace($pattern, $replacement, $string);
    你還真老實,難道不會把9999改成09嗎?