いくつかのデータをいくつかのXMLのログからスクラブする必要があり、preg_replaceをどのようにして正規表現マッチのすべてのものに置き換えるかを知る必要があります。PHP preg_replaceすべてのインスタンスが一致する
xmlは次のようになります。
<contactData>
<id>29194</id>
<firstName>Michael</firstName>
<lastName>Smith</lastName>
<address1>1600 Pennsylvania Ave</address1>
<address2></address2>
<city>Washington</city>
<state>DC</state>
<postalCode>20500</postalCode>
<country>US</country>
<phone>3012013021</phone>
<email>[email protected]</email>
</contactData>
<contactData>
<id>29195</id>
<firstName>Shelly</firstName>
<lastName>McPherson</lastName>
<address1>2411 Georgia Ave</address1>
<address2></address2>
<city>Silver Spring</city>
<state>MD</state>
<postalCode>20902-5412</postalCode>
<country>US</country>
<phone>3012031302</phone>
<email>[email protected]</email>
</contactData>
このxmlでこれを実行するとします。
$regex = $replace = array();
$regex[] = '/(<contactData>)(.*)(<email>)(.*)(<\/email>)/is';
$regex[] = '/(<contactData>)(.*)(<phone>)(.*)(<\/phone>)/is';
$replace[] = '$1$2$3xxxxxxxxxxxxxxxx$5';
$replace[] = '$1$2$3xxxxxxxxxxxxxxxx$5';
$text = preg_replace($regex, $replace, $text);
これを取得します。
<contactData>
<id>29194</id>
<firstName>Michael</firstName>
<lastName>Smith</lastName>
<address1>1600 Pennsylvania Ave</address1>
<address2></address2>
<city>Washington</city>
<state>DC</state>
<postalCode>20500</postalCode>
<country>US</country>
<phone>3012013021</phone>
<email>[email protected]</email>
</contactData>
<contactData>
<id>29195</id>
<firstName>Shelly</firstName>
<lastName>McPherson</lastName>
<address1>2411 Georgia Ave</address1>
<address2></address2>
<city>Silver Spring</city>
<state>MD</state>
<postalCode>20902-5412</postalCode>
<country>US</country>
<phone>xxxxxxxxxxxxxxxx</phone>
<email>xxxxxxxxxxxxxxxx</email>
</contactData>
他の「contactData」の電子メールと電話機をどのように置き換えるのですか?
この質問と回答を見ていてください:http://stackoverflow.com/questions/10523887/replace-all-occurrences-inside-pattern –
利用のDOMDocumentとDOMXPathを使うことの最大の、ありません正規表現を使用してください。 –
http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php – AbraCadaver