Am inregistrari salvate in baza de date sub forma de XML , dupa modelul de mai jos.
Cod: Selectaţi tot
<submission xml:id="id_x515ec84da0ded6.35425957">
<fields>
<field>
<fieldvalue><![CDATA[dds]]></fieldvalue>
<fieldid>710688</fieldid>
</field>
<field>
<fieldvalue><![CDATA[Romania]]></fieldvalue>
<fieldid>710689</fieldid>
</field>
<field>
<fieldvalue><![CDATA[]]></fieldvalue>
<fieldid>710690</fieldid>
</field>
<field>
<fieldvalue><![CDATA[sfs]]></fieldvalue>
<fieldid>710692-1</fieldid>
</field>
<field>
<fieldvalue><![CDATA[ sd]]></fieldvalue>
<fieldid>710692-2</fieldid>
</field>
<field>
<fieldvalue><![CDATA[Afghanistan]]></fieldvalue>
<fieldid>710692-6</fieldid>
</field>
</fields>
</submission>
Am nevoie de un regexp care sa imi caute in xml , de exemplu : daca caut termenul Afganistan si id-ul 710692-6 sa imi returneze true pentru ca am in XML :
Cod: Selectaţi tot
<field>
<fieldvalue><![CDATA[Afghanistan]]></fieldvalue>
<fieldid>710692-6</fieldid>
</field>
Regexul care il am eu nu stie unde sa se opreasca. De exemplu : Caut Romania in campul cu ID 710692-6. e clar ca nu am asa ceva in xml , dar imi da true , pentru ca gaseste romania si mai jos gaseste si id-ul
asta e codul php
Cod: Selectaţi tot
$searchfinal .= " AND LOWER(CONVERT(`x_xml` USING latin1)) $qlike \"(?![ ,\t]*<fieldvalue><!\\\\[cdata\\\\[$)(.*$query([^(?!\\\\$)]*))\\\\]\\\\]></fieldvalue>\n[ ,\t]*<fieldid>$field_id</fieldid>\"";
$qlike = REGEXP sau NOT REGEXP
$query = termenul care il caut
$field_id = id-ul campului in care il caut