例如,我有一个像这样的文件
MistaFuzzy:
group: VIP
permissions: null
Spooner425:
group: VIP
permissions: null
我需要能够搜索名称,并操纵下面的行,暂时,只是将VIP更改为VIP2。
我想我需要使用substr_replace,但我是一个损失,如何实现这一点。
我推荐学习正则表达式
如果一个文件的格式是
,这里有一个函数允许你改变任何值$str = <<<END
MistaFuzzy:
group: VIP
permissions: null
Spooner425:
group: VIP
permissions: null
END;
function updateFile( $username, $key, $value, $str ) {
return preg_replace(
sprintf( "~%s:(.*?)%s:.*?'n~sm", $username, $key ),
sprintf( "%s:$1%s: %s'n", $username, $key, $value ),
$str
);
}
echo updateFile( 'Spooner425', 'permissions', '3', $str );
每天阅读这个网页,直到你理解它们!http://www.regular-expressions.info/
为什么不使用XML文件呢?
<?xml version="1.0" encoding="iso-8859-1"?>
<names>
**<name username="MistaFuzzy">**
<group>VIP</group>
<permissions>null</permissions>
**</name>**
**<name username="Spooner425">**
<group>VIP</group>
<permissions></permissions>
**</name>**
</names>
,然后你可以使用SimpleXML (PHP5)。看这个http://onlamp.com/pub/a/php/2004/01/15/simplexml.html
您可以使用正则表达式:
$user = preg_quote('Spooner425', '~');
$new_group = addcslashes('VIP2', '''$');
$string_input = file_get_contents('/path/to/your/file.txt');
$string_output = preg_replace('~(.+)(' . $user . ':'s+group:'s+)[^'s]+(.+)~s', '$1$2' . $new_group . '$3', $string);
echo '<pre>';
print_r($string_output);
echo '</pre>';
上面应该输出如下内容:
MistaFuzzy:
group: VIP
permissions: null
Spooner425:
group: VIP2
permissions: null