PHP
Chilkat2 PHP
Extract XMP MetaData as XML
See more XMP Examples
Demonstrates how to open a JPG or TIF image file and extract the XMP metadata as XML.Chilkat PHP Downloads
<?php
use Chilkat2\Xmp;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$xmp = new Xmp();
// Load a JPG or TIF image file.
// Sample JPG's with XMP metadata may be found at:
// https://www.chilkatsoft.com/testData/xmp/sample1.jpg
// https://www.chilkatsoft.com/testData/xmp/sample2.jpg
// https://www.chilkatsoft.com/testData/xmp/sample3.jpg
try {
$xmp->LoadAppFile('qa_data/xmp/sample1.jpg');
} catch (\Chilkat2\Exception $e) {
echo $e->getMessage(), "\n";
exit;
}
echo 'Num embedded XMP docs: ', $xmp->NumEmbedded, "\n";
// Assuming there is at least one, get the 1st.
// (There is typically never more than one, but theoretically it's possible.)
try {
$xml = $xmp->GetEmbedded(0);
} catch (\Chilkat2\Exception $e) {
echo "No XMP metadata found.\n";
exit;
}
echo $xml->GetXml(), "\n";
// Sample output:
/*
* <?xml version="1.0" encoding="utf-8"?>
* <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP toolkit 3.0-28, framework 1.6">
* <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:iX="http://ns.adobe.com/iX/1.0/">
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xmpPLUS="XMP Photographic Licensing Universal System (xmpPLUS, http://ns.adobe.com/xap/1.0/PLUS/)">
* <xmpPLUS:CreditLineReq>False</xmpPLUS:CreditLineReq>
* <xmpPLUS:ReuseAllowed>False</xmpPLUS:ReuseAllowed>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
* <Iptc4xmpCore:IntellectualGenre>Profile</Iptc4xmpCore:IntellectualGenre>
* <Iptc4xmpCore:Location>Lake Superior</Iptc4xmpCore:Location>
* <Iptc4xmpCore:CountryCode>US</Iptc4xmpCore:CountryCode>
* <Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
* <Iptc4xmpCore:CiAdrExtadr>John Doe Photography, 123 Maple Lane</Iptc4xmpCore:CiAdrExtadr>
* <Iptc4xmpCore:CiAdrCity>Champaign</Iptc4xmpCore:CiAdrCity>
* <Iptc4xmpCore:CiAdrRegion>Illinois</Iptc4xmpCore:CiAdrRegion>
* <Iptc4xmpCore:CiAdrPcode>61820</Iptc4xmpCore:CiAdrPcode>
* <Iptc4xmpCore:CiAdrCtry>USA</Iptc4xmpCore:CiAdrCtry>
* <Iptc4xmpCore:CiTelWork>+1 (217) 1234567</Iptc4xmpCore:CiTelWork>
* <Iptc4xmpCore:CiEmailWork>john@doe.com</Iptc4xmpCore:CiEmailWork>
* <Iptc4xmpCore:CiUrlWork>www.doe.com</Iptc4xmpCore:CiUrlWork>
* </Iptc4xmpCore:CreatorContactInfo>
* <Iptc4xmpCore:SubjectCode>
* <rdf:Bag>
* <rdf:li>14024001</rdf:li>
* </rdf:Bag>
* </Iptc4xmpCore:SubjectCode>
* <Iptc4xmpCore:Scene>
* <rdf:Bag>
* <rdf:li>012300</rdf:li>
* </rdf:Bag>
* </Iptc4xmpCore:Scene>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:exif="http://ns.adobe.com/exif/1.0/">
* <exif:ColorSpace>1</exif:ColorSpace>
* <exif:PixelXDimension>288</exif:PixelXDimension>
* <exif:PixelYDimension>432</exif:PixelYDimension>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"/>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
* <photoshop:AuthorsPosition>Photographer</photoshop:AuthorsPosition>
* <photoshop:Headline>Young boy yelling</photoshop:Headline>
* <photoshop:CaptionWriter>John Doe</photoshop:CaptionWriter>
* <photoshop:DateCreated>2004-08-19</photoshop:DateCreated>
* <photoshop:City>Marquette</photoshop:City>
* <photoshop:State>Michigan</photoshop:State>
* <photoshop:Country>United States</photoshop:Country>
* <photoshop:TransmissionReference>PO 34567</photoshop:TransmissionReference>
* <photoshop:Instructions>Original RAW capture Nikon D2X, Adobe RGB 1998.</photoshop:Instructions>
* <photoshop:Credit>John Doe Photography</photoshop:Credit>
* <photoshop:Source>John Doe Photography</photoshop:Source>
* <photoshop:History/>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
* <tiff:XResolution>72/1</tiff:XResolution>
* <tiff:YResolution>72/1</tiff:YResolution>
* <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
* <tiff:Orientation>1</tiff:Orientation>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xap="http://ns.adobe.com/xap/1.0/">
* <xap:CreateDate>2005-03-13T02:02:29-06:00</xap:CreateDate>
* <xap:ModifyDate>2005-03-13T02:02:29-06:00</xap:ModifyDate>
* <xap:MetadataDate>2005-03-13T02:02:29-06:00</xap:MetadataDate>
* <xap:CreatorTool>Adobe Photoshop CS Windows</xap:CreatorTool>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/">
* <xapMM:DerivedFrom rdf:parseType="Resource">
* <stRef:instanceID>uuid:f5b64171-9394-11d9-bb8e-a67e6693b6e9</stRef:instanceID>
* <stRef:documentID>adobe:docid:photoshop:e4d002a4-9392-11d9-bb8e-a67e6693b6e9</stRef:documentID>
* </xapMM:DerivedFrom>
* <xapMM:DocumentID>adobe:docid:photoshop:0f410647-9396-11d9-bb8e-a67e6693b6e9</xapMM:DocumentID>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xapRights="http://ns.adobe.com/xap/1.0/rights/">
* <xapRights:Marked>True</xapRights:Marked>
* <xapRights:WebStatement>http://www.doe.com</xapRights:WebStatement>
* <xapRights:RightsUsageTerms>
* <rdf:Alt>
* <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
* </rdf:Alt>
* </xapRights:RightsUsageTerms>
* <xapRights:UsageTerms>
* <rdf:Alt>
* <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
* </rdf:Alt>
* </xapRights:UsageTerms>
* </rdf:Description>
* <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:dc="http://purl.org/dc/elements/1.1/">
* <dc:format>image/jpeg</dc:format>
* <dc:description>
* <rdf:Alt>
* <rdf:li xml:lang="x-default">Three year old African American boy yells with joy on beach during vacation.</rdf:li>
* </rdf:Alt>
* </dc:description>
* <dc:title>
* <rdf:Alt>
* <rdf:li xml:lang="x-default">20040819_pe_014578d.nef</rdf:li>
* </rdf:Alt>
* </dc:title>
* <dc:rights>
* <rdf:Alt>
* <rdf:li xml:lang="x-default">�2004 John Doe, all rights reserved</rdf:li>
* </rdf:Alt>
* </dc:rights>
* <dc:creator>
* <rdf:Seq>
* <rdf:li>John Doe</rdf:li>
* </rdf:Seq>
* </dc:creator>
* <dc:subject>
* <rdf:Bag>
* <rdf:li>boy</rdf:li>
* <rdf:li>gender</rdf:li>
* <rdf:li>human beings</rdf:li>
* <rdf:li>humans</rdf:li>
* <rdf:li>lad</rdf:li>
* <rdf:li>male</rdf:li>
* <rdf:li>people</rdf:li>
* <rdf:li>3-12 years old</rdf:li>
* <rdf:li>age</rdf:li>
* <rdf:li>child</rdf:li>
* <rdf:li>youth</rdf:li>
* <rdf:li>african american</rdf:li>
* <rdf:li>african-american</rdf:li>
* <rdf:li>black</rdf:li>
* <rdf:li>ethnic</rdf:li>
* <rdf:li>ethnicity</rdf:li>
* <rdf:li>people of color</rdf:li>
* <rdf:li>race</rdf:li>
* <rdf:li>beach</rdf:li>
* <rdf:li>nature</rdf:li>
* <rdf:li>scenery</rdf:li>
* <rdf:li>emotion</rdf:li>
* <rdf:li>emotional</rdf:li>
* <rdf:li>emotions</rdf:li>
* <rdf:li>happiness</rdf:li>
* <rdf:li>happy</rdf:li>
* <rdf:li>joy</rdf:li>
* <rdf:li>joyful</rdf:li>
* <rdf:li>joyous</rdf:li>
* </rdf:Bag>
* </dc:subject>
* </rdf:Description>
* </rdf:RDF>
* </x:xmpmeta>
*/
// You can generate parsing code using Chilkat's online tool :
// Generate Parsing Code from XML
$rdf_Description_rdf_about = '';
$rdf_Description_xmlns_xmpPLUS = '';
$rdf_Description_xmlns_Iptc4xmpCore = '';
$rdf_Description_xmlns_exif = '';
$rdf_Description_xmlns_pdf = '';
$rdf_Description_xmlns_photoshop = '';
$rdf_Description_xmlns_tiff = '';
$rdf_Description_xmlns_xap = '';
$rdf_Description_xmlns_stRef = '';
$rdf_Description_xmlns_xapMM = '';
$rdf_Description_xmlns_xapRights = '';
$rdf_Description_xmlns_dc = '';
$xmpPLUS_CreditLineReq = '';
$xmpPLUS_ReuseAllowed = '';
$Iptc4xmpCore_IntellectualGenre = '';
$Iptc4xmpCore_Location = '';
$Iptc4xmpCore_CountryCode = '';
$Iptc4xmpCore_CreatorContactInfo_rdf_parseType = '';
$Iptc4xmpCore_CiAdrExtadr = '';
$Iptc4xmpCore_CiAdrCity = '';
$Iptc4xmpCore_CiAdrRegion = '';
$Iptc4xmpCore_CiAdrPcode = 0;
$Iptc4xmpCore_CiAdrCtry = '';
$Iptc4xmpCore_CiTelWork = '';
$Iptc4xmpCore_CiEmailWork = '';
$Iptc4xmpCore_CiUrlWork = '';
$rdf_li = 0;
$exif_ColorSpace = 0;
$exif_PixelXDimension = 0;
$exif_PixelYDimension = 0;
$photoshop_AuthorsPosition = '';
$photoshop_Headline = '';
$photoshop_CaptionWriter = '';
$photoshop_DateCreated = '';
$photoshop_City = '';
$photoshop_State = '';
$photoshop_Country = '';
$photoshop_TransmissionReference = '';
$photoshop_Instructions = '';
$photoshop_Credit = '';
$photoshop_Source = '';
$tiff_XResolution = '';
$tiff_YResolution = '';
$tiff_ResolutionUnit = 0;
$tiff_Orientation = 0;
$xap_CreateDate = '';
$xap_ModifyDate = '';
$xap_MetadataDate = '';
$xap_CreatorTool = '';
$xapMM_DerivedFrom_rdf_parseType = '';
$stRef_instanceID = '';
$stRef_documentID = '';
$xapMM_DocumentID = '';
$xapRights_Marked = '';
$xapRights_WebStatement = '';
$rdf_li_xml_lang = '';
$strRdf_li = '';
$dc_format = '';
$j = 0;
$count_j = 0;
$x_xmpmeta_xmlns_x = $xml->GetAttrValue('xmlns:x');
$x_xmpmeta_x_xmptk = $xml->GetAttrValue('x:xmptk');
$rdf_RDF_xmlns_rdf = $xml->ChilkatPath('rdf:RDF|(xmlns:rdf)');
$rdf_RDF_xmlns_iX = $xml->ChilkatPath('rdf:RDF|(xmlns:iX)');
$i = 0;
$count_i = $xml->NumChildrenHavingTag('rdf:RDF|rdf:Description');
while ($i < $count_i) {
$xml->I = $i;
$rdf_Description_rdf_about = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(rdf:about)');
$rdf_Description_xmlns_xmpPLUS = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xmpPLUS)');
$rdf_Description_xmlns_Iptc4xmpCore = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:Iptc4xmpCore)');
$rdf_Description_xmlns_exif = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:exif)');
$rdf_Description_xmlns_pdf = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:pdf)');
$rdf_Description_xmlns_photoshop = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:photoshop)');
$rdf_Description_xmlns_tiff = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:tiff)');
$rdf_Description_xmlns_xap = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xap)');
$rdf_Description_xmlns_stRef = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:stRef)');
$rdf_Description_xmlns_xapMM = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xapMM)');
$rdf_Description_xmlns_xapRights = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xapRights)');
$rdf_Description_xmlns_dc = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:dc)');
$xmpPLUS_CreditLineReq = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xmpPLUS:CreditLineReq');
$xmpPLUS_ReuseAllowed = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xmpPLUS:ReuseAllowed');
$Iptc4xmpCore_IntellectualGenre = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:IntellectualGenre');
$Iptc4xmpCore_Location = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Location');
$Iptc4xmpCore_CountryCode = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CountryCode');
$Iptc4xmpCore_CreatorContactInfo_rdf_parseType = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|(rdf:parseType)');
$Iptc4xmpCore_CiAdrExtadr = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrExtadr');
$Iptc4xmpCore_CiAdrCity = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCity');
$Iptc4xmpCore_CiAdrRegion = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrRegion');
$Iptc4xmpCore_CiAdrPcode = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrPcode');
$Iptc4xmpCore_CiAdrCtry = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCtry');
$Iptc4xmpCore_CiTelWork = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiTelWork');
$Iptc4xmpCore_CiEmailWork = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiEmailWork');
$Iptc4xmpCore_CiUrlWork = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiUrlWork');
$rdf_li = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:SubjectCode|rdf:Bag|rdf:li');
$rdf_li = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Scene|rdf:Bag|rdf:li');
$exif_ColorSpace = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:ColorSpace');
$exif_PixelXDimension = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:PixelXDimension');
$exif_PixelYDimension = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:PixelYDimension');
$photoshop_AuthorsPosition = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:AuthorsPosition');
$photoshop_Headline = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Headline');
$photoshop_CaptionWriter = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:CaptionWriter');
$photoshop_DateCreated = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:DateCreated');
$photoshop_City = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:City');
$photoshop_State = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:State');
$photoshop_Country = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Country');
$photoshop_TransmissionReference = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:TransmissionReference');
$photoshop_Instructions = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Instructions');
$photoshop_Credit = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Credit');
$photoshop_Source = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Source');
$tiff_XResolution = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|tiff:XResolution');
$tiff_YResolution = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|tiff:YResolution');
$tiff_ResolutionUnit = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|tiff:ResolutionUnit');
$tiff_Orientation = $xml->GetChildIntValue('rdf:RDF|rdf:Description[i]|tiff:Orientation');
$xap_CreateDate = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xap:CreateDate');
$xap_ModifyDate = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xap:ModifyDate');
$xap_MetadataDate = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xap:MetadataDate');
$xap_CreatorTool = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xap:CreatorTool');
$xapMM_DerivedFrom_rdf_parseType = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|(rdf:parseType)');
$stRef_instanceID = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:instanceID');
$stRef_documentID = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:documentID');
$xapMM_DocumentID = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DocumentID');
$xapRights_Marked = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:Marked');
$xapRights_WebStatement = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:WebStatement');
$rdf_li_xml_lang = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li|(xml:lang)');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li');
$rdf_li_xml_lang = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li|(xml:lang)');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li');
$dc_format = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:format');
$rdf_li_xml_lang = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li|(xml:lang)');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li');
$rdf_li_xml_lang = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li|(xml:lang)');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li');
$rdf_li_xml_lang = $xml->ChilkatPath('rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li|(xml:lang)');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li');
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:creator|rdf:Seq|rdf:li');
$j = 0;
$count_j = $xml->NumChildrenHavingTag('rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li');
while ($j < $count_j) {
$xml->J = $j;
$strRdf_li = $xml->GetChildContent('rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li[j]');
$j = $j + 1;
}
$i = $i + 1;
}