繁体   English   中英

PHP 在 XML 文件中生成随机字符串

[英]PHP Generate random string in XML File

我想生成一个 php 脚本,它已经有一个示例 XML 文件,并且只更改 XML 文件的特定部分。

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<settings version="-1">
  <setting id="0" name="userkey" value="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" package="android" defaultValue="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" defaultSysSet="true" tag="null" />
  <setting id="5" name="10010" value="FFF852E5419D7067" package="com.sdex.androididchanger" defaultValue="FFF852E5419D7067" defaultSysSet="false" tag="null" />
  <setting id="3" name="10070" value="AAA3FA682D1561BA" package="com.sdex.activityrunner" defaultValue="AAA3FA682D1561BA" defaultSysSet="false" tag="null" />
  <setting id="6" name="10072" value="79fcd0d800b9ded9" package="com.google.android.gms" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
  <setting id="4" name="10075" value="79fcd0d800b9ded9" package="com.android.vending" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
  <setting id="7" name="10082" value="79fcd0d800b9ded9" package="com.google.android.syncadapters.calendar" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
</settings>

我希望它只更改 com.google.android.gms package 的值和 defaultValue。

这怎么可能目前我迷路了

加载为 DOMDocument 并迭代设置。 当 package 匹配时更改值。 正如您在下面的代码中看到的,您可以更改任何属性。

$xmlText = <<<'_XML'
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<settings version="-1">
  <setting id="0" name="userkey" value="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" package="android" defaultValue="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" defaultSysSet="true" tag="null" />
  <setting id="5" name="10010" value="FFF852E5419D7067" package="com.sdex.androididchanger" defaultValue="FFF852E5419D7067" defaultSysSet="false" tag="null" />
  <setting id="3" name="10070" value="AAA3FA682D1561BA" package="com.sdex.activityrunner" defaultValue="AAA3FA682D1561BA" defaultSysSet="false" tag="null" />
  <setting id="6" name="10072" value="79fcd0d800b9ded9" package="com.google.android.gms" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
  <setting id="4" name="10075" value="79fcd0d800b9ded9" package="com.android.vending" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
  <setting id="7" name="10082" value="79fcd0d800b9ded9" package="com.google.android.syncadapters.calendar" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null" />
</settings>
_XML;

$doc = new DOMDocument();
$doc->loadXML($xmlText);
foreach($doc->getElementsByTagName('setting') as $setting) {
    if('com.google.android.gms' === $setting->getAttribute('package')) {
        $newValue = substr(md5(uniqid()), 0, 16);
        $setting->setAttribute('value', $newValue);
        $setting->setAttribute('defaultValue', $newValue);
        break;
    }
}
echo $doc->saveXML();

Output

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings version="-1">
  <setting id="0" name="userkey" value="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" package="android" defaultValue="E82393FC2FCC01D402B6CAFA37AFB7964FBBEE938C45BC41FBE2D971FDF6D306" defaultSysSet="true" tag="null"/>
  <setting id="5" name="10010" value="FFF852E5419D7067" package="com.sdex.androididchanger" defaultValue="FFF852E5419D7067" defaultSysSet="false" tag="null"/>
  <setting id="3" name="10070" value="AAA3FA682D1561BA" package="com.sdex.activityrunner" defaultValue="AAA3FA682D1561BA" defaultSysSet="false" tag="null"/>
  <setting id="6" name="10072" value="62d8337b0b0365a8" package="com.google.android.gms" defaultValue="62d8337b0b0365a8" defaultSysSet="false" tag="null"/>
  <setting id="4" name="10075" value="79fcd0d800b9ded9" package="com.android.vending" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null"/>
  <setting id="7" name="10082" value="79fcd0d800b9ded9" package="com.google.android.syncadapters.calendar" defaultValue="79fcd0d800b9ded9" defaultSysSet="false" tag="null"/>
</settings>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM