JSON signature to PDF using FPDF - php
The title of this question is 100% what I'm after.
I have a JSON signature which is stored like this:
{"lines":[[[228.95,21.4],[228.95,24.4],[227.95,32.4],[225.95,40.4],[223.95,47.4],[221.95,54.4],[219.95,61.4],[216.95,69.4],[214.95,74.4],[212.95,80.4],[210.95,88.4],[208.95,93.4],[207.95,99.4],[206.95,106.4],[205.95,113.4],[205.95,119.4],[204.95,125.4],[204.95,129.4],[203.95,132.4],[202.95,134.4],[202.95,136.4],[202.95,137.4],[202.95,138.4],[201.95,139.4],[200.95,140.4],[200.95,141.4],[200.95,142.4],[200.95,143.4]],[[207.95,27.4],[231.95,24.4],[244.95,22.4],[257.95,22.4],[270.95,24.4],[282.95,26.4],[293.95,30.4],[303.95,35.4],[309.95,39.4],[314.95,44.4],[315.95,47.4],[315.95,51.4],[315.95,56.4],[312.95,62.4],[308.95,68.4],[301.95,75.4],[293.95,81.4],[284.95,87.4],[277.95,92.4],[268.95,97.4],[261.95,101.4],[255.95,103.4],[249.95,105.4],[244.95,105.4],[240.95,106.4],[235.95,107.4],[233.95,107.4],[231.95,107.4],[230.95,107.4],[229.95,107.4],[231.95,107.4],[234.95,107.4],[238.95,107.4],[245.95,107.4],[254.95,107.4],[268.95,109.4],[290.95,114.4],[317.95,120.4],[348.95,128.4],[378.95,135.4],[399.95,140.4],[413.95,142.4],[421.95,143.4],[427.95,144.4],[429.95,144.4],[430.95,144.4],[429.95,144.4],[427.95,144.4],[426.95,144.4],[423.95,144.4]]]}
I can show the signature on an page using jQuery like:
$('#sig').signature('draw', <?php echo $signature_1; ?>);
I can't figure it out though how I can decode the JSON string and display the signature using FPDF.
using
var_dump(json_decode();
I get
object(stdClass)#1 (1) { ["lines"]=> array(2) { [0]=> array(28) { [0]=> array(2) { [0]=> float(228.95) [1]=> float(21.4) } [1]=> array(2) { [0]=> float(228.95) [1]=> float(24.4) } [2]=> array(2) { [0]=> float(227.95) [1]=> float(32.4) } [3]=> array(2) { [0]=> float(225.95) [1]=> float(40.4) } [4]=> array(2) { [0]=> float(223.95) [1]=> float(47.4) } [5]=> array(2) { [0]=> float(221.95) [1]=> float(54.4) } [6]=> array(2) { [0]=> float(219.95) [1]=> float(61.4) } [7]=> array(2) { [0]=> float(216.95) [1]=> float(69.4) } [8]=> array(2) { [0]=> float(214.95) [1]=> float(74.4) } [9]=> array(2) { [0]=> float(212.95) [1]=> float(80.4) } [10]=> array(2) { [0]=> float(210.95) [1]=> float(88.4) } [11]=> array(2) { [0]=> float(208.95) [1]=> float(93.4) } [12]=> array(2) { [0]=> float(207.95) [1]=> float(99.4) } [13]=> array(2) { [0]=> float(206.95) [1]=> float(106.4) } [14]=> array(2) { [0]=> float(205.95) [1]=> float(113.4) } [15]=> array(2) { [0]=> float(205.95) [1]=> float(119.4) } [16]=> array(2) { [0]=> float(204.95) [1]=> float(125.4) } [17]=> array(2) { [0]=> float(204.95) [1]=> float(129.4) } [18]=> array(2) { [0]=> float(203.95) [1]=> float(132.4) } [19]=> array(2) { [0]=> float(202.95) [1]=> float(134.4) } [20]=> array(2) { [0]=> float(202.95) [1]=> float(136.4) } [21]=> array(2) { [0]=> float(202.95) [1]=> float(137.4) } [22]=> array(2) { [0]=> float(202.95) [1]=> float(138.4) } [23]=> array(2) { [0]=> float(201.95) [1]=> float(139.4) } [24]=> array(2) { [0]=> float(200.95) [1]=> float(140.4) } [25]=> array(2) { [0]=> float(200.95) [1]=> float(141.4) } [26]=> array(2) { [0]=> float(200.95) [1]=> float(142.4) } [27]=> array(2) { [0]=> float(200.95) [1]=> float(143.4) } } [1]=> array(50) { [0]=> array(2) { [0]=> float(207.95) [1]=> float(27.4) } [1]=> array(2) { [0]=> float(231.95) [1]=> float(24.4) } [2]=> array(2) { [0]=> float(244.95) [1]=> float(22.4) } [3]=> array(2) { [0]=> float(257.95) [1]=> float(22.4) } [4]=> array(2) { [0]=> float(270.95) [1]=> float(24.4) } [5]=> array(2) { [0]=> float(282.95) [1]=> float(26.4) } [6]=> array(2) { [0]=> float(293.95) [1]=> float(30.4) } [7]=> array(2) { [0]=> float(303.95) [1]=> float(35.4) } [8]=> array(2) { [0]=> float(309.95) [1]=> float(39.4) } [9]=> array(2) { [0]=> float(314.95) [1]=> float(44.4) } [10]=> array(2) { [0]=> float(315.95) [1]=> float(47.4) } [11]=> array(2) { [0]=> float(315.95) [1]=> float(51.4) } [12]=> array(2) { [0]=> float(315.95) [1]=> float(56.4) } [13]=> array(2) { [0]=> float(312.95) [1]=> float(62.4) } [14]=> array(2) { [0]=> float(308.95) [1]=> float(68.4) } [15]=> array(2) { [0]=> float(301.95) [1]=> float(75.4) } [16]=> array(2) { [0]=> float(293.95) [1]=> float(81.4) } [17]=> array(2) { [0]=> float(284.95) [1]=> float(87.4) } [18]=> array(2) { [0]=> float(277.95) [1]=> float(92.4) } [19]=> array(2) { [0]=> float(268.95) [1]=> float(97.4) } [20]=> array(2) { [0]=> float(261.95) [1]=> float(101.4) } [21]=> array(2) { [0]=> float(255.95) [1]=> float(103.4) } [22]=> array(2) { [0]=> float(249.95) [1]=> float(105.4) } [23]=> array(2) { [0]=> float(244.95) [1]=> float(105.4) } [24]=> array(2) { [0]=> float(240.95) [1]=> float(106.4) } [25]=> array(2) { [0]=> float(235.95) [1]=> float(107.4) } [26]=> array(2) { [0]=> float(233.95) [1]=> float(107.4) } [27]=> array(2) { [0]=> float(231.95) [1]=> float(107.4) } [28]=> array(2) { [0]=> float(230.95) [1]=> float(107.4) } [29]=> array(2) { [0]=> float(229.95) [1]=> float(107.4) } [30]=> array(2) { [0]=> float(231.95) [1]=> float(107.4) } [31]=> array(2) { [0]=> float(234.95) [1]=> float(107.4) } [32]=> array(2) { [0]=> float(238.95) [1]=> float(107.4) } [33]=> array(2) { [0]=> float(245.95) [1]=> float(107.4) } [34]=> array(2) { [0]=> float(254.95) [1]=> float(107.4) } [35]=> array(2) { [0]=> float(268.95) [1]=> float(109.4) } [36]=> array(2) { [0]=> float(290.95) [1]=> float(114.4) } [37]=> array(2) { [0]=> float(317.95) [1]=> float(120.4) } [38]=> array(2) { [0]=> float(348.95) [1]=> float(128.4) } [39]=> array(2) { [0]=> float(378.95) [1]=> float(135.4) } [40]=> array(2) { [0]=> float(399.95) [1]=> float(140.4) } [41]=> array(2) { [0]=> float(413.95) [1]=> float(142.4) } [42]=> array(2) { [0]=> float(421.95) [1]=> float(143.4) } [43]=> array(2) { [0]=> float(427.95) [1]=> float(144.4) } [44]=> array(2) { [0]=> float(429.95) [1]=> float(144.4) } [45]=> array(2) { [0]=> float(430.95) [1]=> float(144.4) } [46]=> array(2) { [0]=> float(429.95) [1]=> float(144.4) } [47]=> array(2) { [0]=> float(427.95) [1]=> float(144.4) } [48]=> array(2) { [0]=> float(426.95) [1]=> float(144.4) } [49]=> array(2) { [0]=> float(423.95) [1]=> float(144.4) } } } }
Looking for help.
Thanks.
BB
In my opinion you should obtain an image of your signature an include it into the pdf.
You have two paths for doing this, client side and server side.
For server side there is this script for other js project, now discontinued but maybe usefull for you https://github.com/thomasjbradley/signature-to-image/ I don't now if your plugin generates de signature JSON in the same fashion that this one, but reading this code can help you doing the server work
Other server side solution is to send the signature in svg format from your plugin and convert it to pdf, this php project supports svg natively https://tcpdf.org/
In the client side, you can get the canvas image through
HTMLCanvasElement.toDataURL()
This generates an uri containing the base64 encoded image string that you can send to the server, but depends on the browser support of the feature
Info here https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL
Good luck
Related
php Interpret xml file provided by NMAP
I have a xml file provided by NMAP 7.80, and I would like to interpret it using php version 7.4.3. First I tried to use 'SimpleXMLElement', but I am not sure how to handle results. $xml=simplexml_load_string($file, 'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_NOBLANKS) or die("Error: Cannot create object"); Seems that #attributes is the main field, but I am not able to call it. echo $xml1->attributes; This is the output from the dump object(SimpleXMLElement)#2 (6) { ["#attributes"]=> array(6) { ["scanner"]=> string(4) "nmap" ["args"]=> string(111) "nmap --script nmap-vulners/ -sV -oX /var/scripts/bash/security/log/UCFGSP.xml 192.168.1.1/32" ["start"]=> string(10) "1645692795" ["startstr"]=> string(24) "Thu Feb 24 05:53:15 2022" ["version"]=> string(4) "7.80" ["xmloutputversion"]=> string(4) "1.04" } ["scaninfo"]=> object(SimpleXMLElement)#8 (1) { ["#attributes"]=> array(4) { ["type"]=> string(3) "syn" ["protocol"]=> string(3) "tcp" ["numservices"]=> string(4) "1000" ["services"]=> string(3813) "1,3-4,6-7,9,13,17,(...)" } } ["verbose"]=> (I have omitted the rest...) I also have tried to decode to json format. It works better, but the array structure is very hard to understand. $xml = json_decode(json_encode((array) simplexml_load_string($file)), 1); I can decode the data using e.g. echo "type:".$xml['scaninfo']['#attributes']['type'] // output: type:syn echo "scanner:".$xml["#attributes"]["scanner"] // output: scanner:nmap Occurs there are too many fields, and I still creating several loops (foreach) in order to understand each multidimensional array loop. Here is the dump: array(6) { ["#attributes"]=> array(6) { ["scanner"]=> string(4) "nmap" ["args"]=> string(111) "nmap --script nmap-vulners/ -sV -oX /var/scripts/bash/security/log/UCFGSP.xml 192.168.1.1/32" ["start"]=> string(10) "1645692795" ["startstr"]=> string(24) "Thu Feb 24 05:53:15 2022" ["version"]=> string(4) "7.80" ["xmloutputversion"]=> string(4) "1.04" } ["scaninfo"]=> array(1) { ["#attributes"]=> array(4) { ["type"]=> string(3) "syn" ["protocol"]=> string(3) "tcp" ["numservices"]=> string(4) "1000" ["services"]=> string(3813) "1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389" } } ["verbose"]=> array(1) { ["#attributes"]=> array(1) { ["level"]=> string(1) "0" } } ["debugging"]=> array(1) { ["#attributes"]=> array(1) { ["level"]=> string(1) "0" } } ["host"]=> array(6) { ["#attributes"]=> array(2) { ["starttime"]=> string(10) "1645692796" ["endtime"]=> string(10) "1645692856" } ["status"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(2) "up" ["reason"]=> string(10) "echo-reply" ["reason_ttl"]=> string(3) "126" } } ["address"]=> array(1) { ["#attributes"]=> array(2) { ["addr"]=> string(15) "192.168.1.1" ["addrtype"]=> string(4) "ipv4" } } ["hostnames"]=> array(0) { } ["ports"]=> array(2) { ["extraports"]=> array(2) { ["#attributes"]=> array(2) { ["state"]=> string(6) "closed" ["count"]=> string(3) "983" } ["extrareasons"]=> array(1) { ["#attributes"]=> array(2) { ["reason"]=> string(6) "resets" ["count"]=> string(3) "983" } } } ["port"]=> array(17) { [0]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(2) "22" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(6) { ["name"]=> string(3) "ssh" ["product"]=> string(7) "OpenSSH" ["version"]=> string(15) "for_Windows_8.1" ["extrainfo"]=> string(12) "protocol 2.0" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(38) "cpe:/a:openbsd:openssh:for_windows_8.1" } } [1]=> array(4) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(2) "80" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(6) { ["name"]=> string(4) "http" ["product"]=> string(19) "Microsoft IIS httpd" ["version"]=> string(3) "8.0" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> array(2) { [0]=> string(24) "cpe:/a:microsoft:iis:8.0" [1]=> string(24) "cpe:/o:microsoft:windows" } } ["script"]=> array(2) { [0]=> array(2) { ["#attributes"]=> array(2) { ["id"]=> string(18) "http-server-header" ["output"]=> string(17) "Microsoft-IIS/8.0" } ["elem"]=> string(17) "Microsoft-IIS/8.0" } [1]=> array(2) { ["#attributes"]=> array(2) { ["id"]=> string(7) "vulners" ["output"]=> string(91) " cpe:/a:microsoft:iis:8.0: SMNTC-70937 7.6 https://vulners.com/symantec/SMNTC-70937" } ["table"]=> array(2) { ["#attributes"]=> array(1) { ["key"]=> string(24) "cpe:/a:microsoft:iis:8.0" } ["table"]=> array(1) { ["elem"]=> array(4) { [0]=> string(8) "symantec" [1]=> string(5) "false" [2]=> string(3) "7.6" [3]=> string(11) "SMNTC-70937" } } } } } } [2]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(3) "135" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(5) "msrpc" ["product"]=> string(21) "Microsoft Windows RPC" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [3]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(3) "139" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(11) "netbios-ssn" ["product"]=> string(29) "Microsoft Windows netbios-ssn" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [4]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(3) "445" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(12) "microsoft-ds" ["product"]=> string(52) "Microsoft Windows Server 2008 R2 - 2012 microsoft-ds" ["ostype"]=> string(29) "Windows Server 2008 R2 - 2012" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [5]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "1801" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(1) { ["#attributes"]=> array(3) { ["name"]=> string(4) "msmq" ["method"]=> string(5) "table" ["conf"]=> string(1) "3" } } } [6]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "2103" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(5) "msrpc" ["product"]=> string(21) "Microsoft Windows RPC" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [7]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "2105" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(5) "msrpc" ["product"]=> string(21) "Microsoft Windows RPC" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [8]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "2107" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(5) "msrpc" ["product"]=> string(21) "Microsoft Windows RPC" ["ostype"]=> string(7) "Windows" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(24) "cpe:/o:microsoft:windows" } } [9]=> array(4) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "3128" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(10) "http-proxy" ["product"]=> string(16) "Squid http proxy" ["version"]=> string(6) "3.5.28" ["method"]=> string(6) "probed" ["conf"]=> string(2) "10" } ["cpe"]=> string(31) "cpe:/a:squid-cache:squid:3.5.28" } ["script"]=> array(2) { [0]=> array(2) { ["#attributes"]=> array(2) { ["id"]=> string(18) "http-server-header" ["output"]=> string(12) "squid/3.5.28" } ["elem"]=> string(12) "squid/3.5.28" } [1]=> array(2) { ["#attributes"]=> array(2) { ["id"]=> string(7) "vulners" ["output"]=> string(2014) " cpe:/a:squid-cache:squid:3.5.28: MSF:ILITIES/UBUNTU-CVE-2019-12525/ 7.5 https://vulners.com/metasploit/MSF:ILITIES/UBUNTU-CVE-2019-12525/ *EXPLOIT* MSF:ILITIES/CENTOS_LINUX-CVE-2020-11945/ 7.5 https://vulners.com/metasploit/MSF:ILITIES/CENTOS_LINUX-CVE-2020-11945/ *EXPLOIT* CVE-2020-11945 7.5 https://vulners.com/cve/CVE-2020-11945 CVE-2019-12526 7.5 https://vulners.com/cve/CVE-2019-12526 CVE-2019-12525 7.5 https://vulners.com/cve/CVE-2019-12525 CVE-2019-12519 7.5 https://vulners.com/cve/CVE-2019-12519 CVE-2020-24606 7.1 https://vulners.com/cve/CVE-2020-24606 CVE-2020-15049 6.5 https://vulners.com/cve/CVE-2020-15049 CVE-2019-12523 6.4 https://vulners.com/cve/CVE-2019-12523 CVE-2019-18677 5.8 https://vulners.com/cve/CVE-2019-18677 MSF:ILITIES/UBUNTU-CVE-2021-31807/ 5.0 https://vulners.com/metasploit/MSF:ILITIES/UBUNTU-CVE-2021-31807/ *EXPLOIT* CVE-2021-28651 5.0 https://vulners.com/cve/CVE-2021-28651 CVE-2020-25097 5.0 https://vulners.com/cve/CVE-2020-25097 CVE-2020-14058 5.0 https://vulners.com/cve/CVE-2020-14058 CVE-2019-18679 5.0 https://vulners.com/cve/CVE-2019-18679 CVE-2019-18678 5.0 https://vulners.com/cve/CVE-2019-18678 CVE-2019-18676 5.0 https://vulners.com/cve/CVE-2019-18676 CVE-2019-12529 4.3 https://vulners.com/cve/CVE-2019-12529 CVE-2019-12521 4.3 https://vulners.com/cve/CVE-2019-12521 CVE-2021-31807 4.0 https://vulners.com/cve/CVE-2021-31807 CVE-2021-28652 4.0 https://vulners.com/cve/CVE-2021-28652 MSF:ILITIES/UBUNTU-CVE-2021-28651/ 0.0 https://vulners.com/metasploit/MSF:ILITIES/UBUNTU-CVE-2021-28651/ *EXPLOIT* MSF:ILITIES/SUSE-CVE-2021-28652/ 0.0 https://vulners.com/metasploit/MSF:ILITIES/SUSE-CVE-2021-28652/ *EXPLOIT* MSF:ILITIES/SUSE-CVE-2021-28651/ 0.0 https://vulners.com/metasploit/MSF:ILITIES/SUSE-CVE-2021-28651/ *EXPLOIT* MSF:ILITIES/DEBIAN-CVE-2021-31807/ 0.0 https://vulners.com/metasploit/MSF:ILITIES/DEBIAN-CVE-2021-31807/ *EXPLOIT*" } ["table"]=> array(2) { ["#attributes"]=> array(1) { ["key"]=> string(31) "cpe:/a:squid-cache:squid:3.5.28" } ["table"]=> array(25) { [0]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "7.5" [3]=> string(34) "MSF:ILITIES/UBUNTU-CVE-2019-12525/" } } [1]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "7.5" [3]=> string(40) "MSF:ILITIES/CENTOS_LINUX-CVE-2020-11945/" } } [2]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "7.5" [3]=> string(14) "CVE-2020-11945" } } [3]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "7.5" [3]=> string(14) "CVE-2019-12526" } } [4]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "7.5" [3]=> string(14) "CVE-2019-12525" } } [5]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "7.5" [3]=> string(14) "CVE-2019-12519" } } [6]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "7.1" [3]=> string(14) "CVE-2020-24606" } } [7]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "6.5" [3]=> string(14) "CVE-2020-15049" } } [8]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "6.4" [3]=> string(14) "CVE-2019-12523" } } [9]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.8" [3]=> string(14) "CVE-2019-18677" } } [10]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "5.0" [3]=> string(34) "MSF:ILITIES/UBUNTU-CVE-2021-31807/" } } [11]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2021-28651" } } [12]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2020-25097" } } [13]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2020-14058" } } [14]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2019-18679" } } [15]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2019-18678" } } [16]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "5.0" [3]=> string(14) "CVE-2019-18676" } } [17]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "4.3" [3]=> string(14) "CVE-2019-12529" } } [18]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "4.3" [3]=> string(14) "CVE-2019-12521" } } [19]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "4.0" [3]=> string(14) "CVE-2021-31807" } } [20]=> array(1) { ["elem"]=> array(4) { [0]=> string(3) "cve" [1]=> string(5) "false" [2]=> string(3) "4.0" [3]=> string(14) "CVE-2021-28652" } } [21]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "0.0" [3]=> string(34) "MSF:ILITIES/UBUNTU-CVE-2021-28651/" } } [22]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "0.0" [3]=> string(32) "MSF:ILITIES/SUSE-CVE-2021-28652/" } } [23]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "0.0" [3]=> string(32) "MSF:ILITIES/SUSE-CVE-2021-28651/" } } [24]=> array(1) { ["elem"]=> array(4) { [0]=> string(10) "metasploit" [1]=> string(4) "true" [2]=> string(3) "0.0" [3]=> string(34) "MSF:ILITIES/DEBIAN-CVE-2021-31807/" } } } } } } } [10]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(4) "3389" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(1) { ["#attributes"]=> array(4) { ["name"]=> string(13) "ms-wbt-server" ["tunnel"]=> string(3) "ssl" ["method"]=> string(5) "table" ["conf"]=> string(1) "3" } } } [11]=> array(3) { ["#attributes"]=> array(2) { ["protocol"]=> string(3) "tcp" ["portid"]=> string(5) "49152" } ["state"]=> array(1) { ["#attributes"]=> array(3) { ["state"]=> string(4) "open" ["reason"]=> string(7) "syn-ack" ["reason_ttl"]=> string(3) "126" } } ["service"]=> array(2) { ["#attributes"]=> array(5) { ["name"]=> string(5) "msrpc" ["product"]=> (...) My question is : Based on xml file, should I keep working with json decode (arrays), or give more attention to SimpleXMLElement? I believe json is easier, but is there a way to give a structural output from the entire array? e.g. array( array( '#attributes' => array( array( 'scanner' => 'nmap', 'args' => 'nmap --script nmap-vulners...', 'start' => '1645692795', (etc...) Here is a sample of the XML format: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nmaprun> <?xml-stylesheet href="file:///usr/.../nmap.xsl" type="text/xsl"?> <!-- Nmap 7.80 scan initiated Thu Feb 24 05:53:15 2022 as: nmap --script nmap-vulners/ -sV -oX /var/scripts/bash/security/log/UCFGSP.xml 192.168.1.1/32 --> <nmaprun scanner="nmap" args="nmap --script nmap-vulners/ -sV -oX /var/scripts/bash/security/log/UCFGSP.xml 192.168.1.1/32" start="1645692795" startstr="Thu Feb 24 05:53:15 2022" version="7.80" xmloutputversion="1.04"> <scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,(...)"/> <verbose level="0"/> <debugging level="0"/> <host starttime="1645692796" endtime="1645692856"><status state="up" reason="echo-reply" reason_ttl="126"/> <address addr="192.168.1.1" addrtype="ipv4"/> <hostnames> </hostnames> <ports><extraports state="closed" count="983"> <extrareasons reason="resets" count="983"/> </extraports> <port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="126"/><service name="ssh" product="OpenSSH" version="for_Windows_8.1" extrainfo="protocol 2.0" method="probed" conf="10"><cpe>cpe:/a:openbsd:openssh:for_windows_8.1</cpe></service></port> <port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="126"/><service name="http" product="Microsoft IIS httpd" version="8.0" ostype="Windows" method="probed" conf="10"><cpe>cpe:/a:microsoft:iis:8.0</cpe><cpe>cpe:/o:microsoft:windows</cpe></service><script id="http-server-header" output="Microsoft-IIS/8.0"><elem>Microsoft-IIS/8.0</elem> </script><script id="vulners" output=" cpe:/a:microsoft:iis:8.0: SMNTC-70937 7.6 https://vulners.com/symantec/SMNTC-70937"><table key="cpe:/a:microsoft:iis:8.0"> <table> <elem key="type">symantec</elem> <elem key="is_exploit">false</elem> <elem key="cvss">7.6</elem> <elem key="id">SMNTC-70937</elem> </table> </table> </script></port> <port> <table key="cpe:/a:squid-cache:squid:3.5.28"> <elem key="type">metasploit</elem> <elem key="is_exploit">true</elem> <elem key="cvss">7.5</elem> <elem key="id">MSF:ILITIES/UBUNTU-CVE-2019-12525/</elem> </table> </port> </ports> </host> </nmaprun>
A few things to get out of the habit of: Don't bother with LIBXML_NOCDATA; it's a formatting flag for when you're outputting XML, and generally makes no difference to reading it. Don't try to encode XML as JSON, or a PHP array; you'll just get in a muddle. Don't trust the output of var_dump and friends for these objects, because they have rather a lot of "magic" that isn't displayed well. What you should do is: Have a look at the examples in the PHP manual. The simplest explanation is that you use ->name to access child elements (tags), and ['name'] to access attributes. Cast values using (string)$foo when you want them as a plain string rather than an object to navigate further. So in your case, to get the "type" in the "scaninfo", you simply write this: $type = (string)$xml->scaninfo['type']; Or to get all the "portids", you would write this: $portids = []; foreach ( $xml->host->ports->port as $port ) { $portids[] = (string)$port['portid']; }
I got it working with this syntax: $xml=simplexml_load_string($file, 'SimpleXMLElement', LIBXML_NOBLANKS) or die("Error: Cannot create object"); echo $xml->scaninfo->attributes()->protocol; Thank you all.
Flatten multi dimension array but maintain keys?
I have the following: [6199]=> array(12) { ["Origin"]=> array(3) { ["name"]=> array(1) { [0]=> string(4) "Cuba" } ["slug"]=> array(1) { [0]=> string(27) "cuabn-havana-habanos-cigars" } ["id"]=> array(1) { [0]=> int(0) } } ["Filler"]=> array(3) { ["name"]=> array(2) { [0]=> string(9) "Dominican" [1]=> string(10) "Nicaraguan" } ["slug"]=> array(2) { [0]=> string(9) "dominican" [1]=> string(10) "nicaraguan" } ["id"]=> array(2) { [0]=> int(0) [1]=> int(1) } } } [6192]=> array(11) { ["Origin"]=> array(3) { ["name"]=> array(1) { [0]=> string(9) "Nicaragua" } ["slug"]=> array(1) { [0]=> string(27) "nicaraguan-new-world-cigars" } ["id"]=> array(1) { [0]=> int(0) } } ["Filler"]=> array(3) { ["name"]=> array(2) { [0]=> string(9) "Java" [1]=> string(10) "Nicaraguan" } ["slug"]=> array(2) { [0]=> string(9) "java" [1]=> string(10) "nicaraguan" } ["id"]=> array(2) { [0]=> int(0) [1]=> int(1) } } } and my expected output is: array(12) { ["Origin"]=> array(3) { ["name"]=> array(1) { [0]=> string(4) "Cuba". [1]=> string(9) "Nicaragua" } ["slug"]=> array(1) { [0]=> string(27) "cuabn-havana-habanos-cigars", [0]=> string(27) "nicaraguan-new-world-cigars" } ["id"]=> array(1) { [0]=> int(0) } } ["Filler"]=> array(3) { ["name"]=> array(2) { [0]=> string(9) "Dominican" [1]=> string(10) "Nicaraguan" [2]=> string(9) "Java" } ["slug"]=> array(2) { [0]=> string(9) "dominican" [1]=> string(10) "nicaraguan" [3]=> string(9) "java" } ["id"]=> array(2) { [0]=> int(0) [1]=> int(1) } } See how it eliminates dupes and merges each array maintaining the "origin" key. I've tried : foreach ($resultterms as $keyname => $valuename){ foreach ($valuename as $keysub => $valuesub) { foreach($valuesub['name'] as $keysubsub => $valuesubsub){ # code... $prods_atts[$keysub]['name'][$keysubsub] = $valuesubsub; $prods_atts[$keysub]['slug'][$keysubsub] = $valuesub['slug'][$keysubsub]; $prods_atts[$keysub]['id'][$keysubsub] = $valuesub['id'][$keysubsub]; } } } where $resultterms is the original arrays but it's not working. I was wondering if there was a wonderful php function I could use to merge these instead of so many nested for each loops?
I believe you're just looking for array_merge_recursive. call_user_func_array('array_merge_recursive', array_values($prod_atts)); call_user_func_array allows to transform an array into a list of arguments array_values because in the end, you seem to want to get rid of the first layer of your array In order to try it, could you post the var_export of your variable instead of the var_dump? echo(var_export($prod_atts, true));
merge your array by any suggested method. After that you will get duplicated values. And you need save only the unique items $new = array_merge_recursive($resultterms['6199'], $resultterms['6192']); foreach($new['Origin'] as &$item) { $item = array_unique($item); } foreach($new['Filler'] as &$item) { $item = array_unique($item); }
Extracting triples from text in php using Stanford-NLP?
I have a text .. I went to extract triples from text .. I use Stanford-NLP Library in php Standford-NLP How can I extract triples(subject - object - predicate)? The example code in the GitHub ReadMe shows how to write the code. The output is a list of word/part-of-speech pairs. Looking at the first example, "What does the fox say?" becomes: array(3) { ["wordsAndTags"]=> array(6) { [0]=> array(2) { [0]=> string(4) "What" [1]=> string(2) "WP" } [1]=> array(2) { [0]=> string(4) "does" [1]=> string(3) "VBZ" } [2]=> array(2) { [0]=> string(3) "the" [1]=> string(2) "DT" } [3]=> array(2) { [0]=> string(3) "fox" [1]=> string(2) "NN" } [4]=> array(2) { [0]=> string(3) "say" [1]=> string(2) "VB" } [5]=> array(2) { [0]=> string(1) "?" [1]=> string(1) "." } } ["penn"]=> array(2) { ["parent"]=> string(4) "ROOT" ["children"]=> array(1) { [0]=> array(2) { ["parent"]=> string(5) "SBARQ" ["children"]=> array(3) { [0]=> array(2) { ["parent"]=> string(4) "WHNP" ["children"]=> array(1) { [0]=> array(2) { ["parent"]=> string(7) "WP What" ["children"]=> array(0) { } } } } [1]=> array(2) { ["parent"]=> string(2) "SQ" ["children"]=> array(3) { [0]=> array(2) { ["parent"]=> string(8) "VBZ does" ["children"]=> array(0) { } } [1]=> array(2) { ["parent"]=> string(2) "NP" ["children"]=> array(2) { [0]=> array(2) { ["parent"]=> string(6) "DT the" ["children"]=> array(0) { } } [1]=> array(2) { ["parent"]=> string(6) "NN fox" ["children"]=> array(0) { } } } } [2]=> array(2) { ["parent"]=> string(2) "VP" ["children"]=> array(1) { [0]=> array(2) { ["parent"]=> string(6) "VB say" ["children"]=> array(0) { } } } } } } [2]=> array(2) { ["parent"]=> string(3) ". ?" ["children"]=> array(0) { } } } } } } ["typedDependencies"]=> array(5) { [0]=> array(3) { ["type"]=> string(4) "dobj" [0]=> array(2) { ["feature"]=> string(3) "say" ["index"]=> int(5) } [1]=> array(2) { ["feature"]=> string(4) "What" ["index"]=> int(1) } } [1]=> array(3) { ["type"]=> string(3) "aux" [0]=> array(2) { ["feature"]=> string(3) "say" ["index"]=> int(5) } [1]=> array(2) { ["feature"]=> string(4) "does" ["index"]=> int(2) } } [2]=> array(3) { ["type"]=> string(3) "det" [0]=> array(2) { ["feature"]=> string(3) "fox" ["index"]=> int(4) } [1]=> array(2) { ["feature"]=> string(3) "the" ["index"]=> int(3) } } [3]=> array(3) { ["type"]=> string(5) "nsubj" [0]=> array(2) { ["feature"]=> string(3) "say" ["index"]=> int(5) } [1]=> array(2) { ["feature"]=> string(3) "fox" ["index"]=> int(4) } } [4]=> array(3) { ["type"]=> string(4) "root" [0]=> array(2) { ["feature"]=> string(4) "ROOT" ["index"]=> int(0) } [1]=> array(2) { ["feature"]=> string(3) "say" ["index"]=> int(5) } } } } Then I need to extract triples .. How can I do that?
Get specific values from an array by a form action POST
I'm having trouble getting specific values from an array. I have tried this but it doesn't work. $item1 = $this->request->post['banner_image']; foreach($item1 as $k => $v) { if($k == 'top' && $v > 0) { echo $v.' - '; } } I need to get only a few values... such us [top] and [left] for each one . This is the var_dump($_POST); array(2) { ["pavcontentslider_module"]=> array(1) { [0]=> array(11) { ["layout_id"]=> string(1) "1" ["position"]=> string(9) "slideshow" ["status"]=> string(1) "1" ["sort_order"]=> string(1) "1" ["auto_play"]=> string(1) "0" ["text_interval"]=> string(4) "8000" ["width"]=> string(4) "1170" ["height"]=> string(3) "540" ["image_navigator"]=> string(1) "1" ["navimg_weight"]=> string(3) "184" ["navimg_height"]=> string(2) "81" } } ["banner_image"]=> array(6) { [1]=> array(7) { ["image"]=> string(26) "data/slider/imgslider3.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "testo" } [1]=> array(1) { [0]=> string(8) "engtesto" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "tossing" } [1]=> array(1) { [0]=> string(6) "bounce" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(12) "banner-info1" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "90" } [1]=> array(1) { [0]=> string(3) "160" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(3) "660" } [1]=> array(1) { [0]=> string(3) "335" } } } [2]=> array(7) { ["image"]=> string(26) "data/slider/imgslider7.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "test2" } [1]=> array(1) { [0]=> string(8) "engtest2" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "slideUp" } [1]=> array(1) { [0]=> string(7) "slideUp" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(12) "banner-info1" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "91" } [1]=> array(1) { [0]=> string(3) "183" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(3) "210" } [1]=> array(1) { [0]=> string(3) "432" } } } [3]=> array(7) { ["image"]=> string(26) "data/slider/imgslider5.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "testo" } [1]=> array(1) { [0]=> string(7) "resrser" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "slideUp" } [1]=> array(1) { [0]=> string(7) "slideUp" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(11) "banner-info" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "10" } [1]=> array(1) { [0]=> string(2) "29" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(2) "20" } [1]=> array(1) { [0]=> string(2) "66" } } } [4]=> array(7) { ["image"]=> string(26) "data/slider/imgslider6.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "testo" } [1]=> array(1) { [0]=> string(4) "teso" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "slideUp" } [1]=> array(1) { [0]=> string(7) "slideUp" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(11) "banner-info" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "27" } [1]=> array(1) { [0]=> string(2) "22" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(2) "61" } [1]=> array(1) { [0]=> string(2) "66" } } } [5]=> array(7) { ["image"]=> string(26) "data/slider/imgslider8.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "testo" } [1]=> array(1) { [0]=> string(6) "tes6yo" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "slideUp" } [1]=> array(1) { [0]=> string(7) "slideUp" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(11) "banner-info" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "20" } [1]=> array(1) { [0]=> string(2) "14" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(2) "38" } [1]=> array(1) { [0]=> string(2) "57" } } } [6]=> array(7) { ["image"]=> string(26) "data/slider/imgslider2.jpg" ["link"]=> string(0) "" ["title"]=> array(2) { [4]=> array(1) { [0]=> string(5) "testo" } [1]=> array(1) { [0]=> string(5) "testo" } } ["effect"]=> array(2) { [4]=> array(1) { [0]=> string(7) "slideUp" } [1]=> array(1) { [0]=> string(7) "slideUp" } } ["class"]=> array(2) { [4]=> array(1) { [0]=> string(11) "banner-info" } [1]=> array(1) { [0]=> string(11) "banner-info" } } ["top"]=> array(2) { [4]=> array(1) { [0]=> string(2) "29" } [1]=> array(1) { [0]=> string(2) "25" } } ["left"]=> array(2) { [4]=> array(1) { [0]=> string(2) "66" } [1]=> array(1) { [0]=> string(2) "47" } } } } }
A way to have a better look at your results are to first echo "<pre>"; before you var_dump. That will allow you to see how the array is formatted better. My guess is that the $key you're searching for is embedded at a deeper level. If you're still having trouble parsing it yourself try editing your post to allow us to see a better formatted view. It's hard to see but try echoing (without the for loop) $item1[1]['image'] and see if anything is spit out. I think the values you are interested are actually within $item1[1] rather than just $item1. Hopefully that made sense.
After Drupal update show Errors
I've updated a Drupal from version 7.2 to version 7.26. After do that I've some errors: throw new EntityMalformedException (Missing bundle property on entity of type taxonomy_term) It appears in file common . inc: if (!isset($entity->{$info['entity keys']['bundle']}) || $entity->{$info['entity keys']['bundle']} === '') { I insert some "echos" to see when is shown this message, and I get this: var_dump( $info['entity keys']); array(4) { ["id"]=> string(3) "tid" ["bundle"]=> string(23) "vocabulary_machine_name" ["label"]=> string(4) "name" ["revision"]=> string(0) "" } array(4) { ["id"]=> string(3) "tid" ["bundle"]=> string(23) "vocabulary_machine_name" ["label"]=> string(4) "name" ["revision"]=> string(0) "" } var_dump( $info); array(22) { ["label"]=> string(22) "Término de taxonomía" ["controller class"]=> string(22) "TaxonomyTermController" ["base table"]=> string(18) "taxonomy_term_data" ["uri callback"]=> string(17) "taxonomy_term_uri" ["fieldable"]=> bool(true) ["entity keys"]=> array(4) { ["id"]=> string(3) "tid" ["bundle"]=> string(23) "vocabulary_machine_name" ["label"]=> string(4) "name" ["revision"]=> string(0) "" } ["bundle keys"]=> array(1) { ["bundle"]=> string(12) "machine_name" } ["bundles"]=> array(3) { ["pais"]=> array(3) { ["label"]=> string(7) "Regions" ["admin"]=> array(4) { ["path"]=> string(58) "admin/structure/taxonomy/%taxonomy_vocabulary_machine_name" ["real path"]=> string(29) "admin/structure/taxonomy/pais" ["bundle argument"]=> int(3) ["access arguments"]=> array(1) { [0]=> string(19) "administer taxonomy" } } ["rdf_mapping"]=> array(5) { ["rdftype"]=> array(1) { [0]=> string(12) "skos:Concept" } ["name"]=> array(1) { ["predicates"]=> array(2) { [0]=> string(10) "rdfs:label" [1]=> string(14) "skos:prefLabel" } } ["description"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(15) "skos:definition" } } ["vid"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(13) "skos:inScheme" } ["type"]=> string(3) "rel" } ["parent"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(12) "skos:broader" } ["type"]=> string(3) "rel" } } } ["auto_created_voc38877"]=> array(3) { ["label"]=> string(10) "Provincias" ["admin"]=> array(4) { ["path"]=> string(58) "admin/structure/taxonomy/%taxonomy_vocabulary_machine_name" ["real path"]=> string(46) "admin/structure/taxonomy/auto_created_voc38877" ["bundle argument"]=> int(3) ["access arguments"]=> array(1) { [0]=> string(19) "administer taxonomy" } } ["rdf_mapping"]=> array(5) { ["rdftype"]=> array(1) { [0]=> string(12) "skos:Concept" } ["name"]=> array(1) { ["predicates"]=> array(2) { [0]=> string(10) "rdfs:label" [1]=> string(14) "skos:prefLabel" } } ["description"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(15) "skos:definition" } } ["vid"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(13) "skos:inScheme" } ["type"]=> string(3) "rel" } ["parent"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(12) "skos:broader" } ["type"]=> string(3) "rel" } } } ["busquedas_destacadas_"]=> array(3) { ["label"]=> string(21) "Búsquedas destacadas" ["admin"]=> array(4) { ["path"]=> string(58) "admin/structure/taxonomy/%taxonomy_vocabulary_machine_name" ["real path"]=> string(46) "admin/structure/taxonomy/busquedas_destacadas_" ["bundle argument"]=> int(3) ["access arguments"]=> array(1) { [0]=> string(19) "administer taxonomy" } } ["rdf_mapping"]=> array(5) { ["rdftype"]=> array(1) { [0]=> string(12) "skos:Concept" } ["name"]=> array(1) { ["predicates"]=> array(2) { [0]=> string(10) "rdfs:label" [1]=> string(14) "skos:prefLabel" } } ["description"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(15) "skos:definition" } } ["vid"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(13) "skos:inScheme" } ["type"]=> string(3) "rel" } ["parent"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(12) "skos:broader" } ["type"]=> string(3) "rel" } } } } ["view modes"]=> array(1) { ["full"]=> array(2) { ["label"]=> string(34) "Página de términos de taxonomía" ["custom settings"]=> bool(false) } } ["static cache"]=> bool(true) ["field cache"]=> bool(true) ["load hook"]=> string(18) "taxonomy_term_load" ["translation"]=> array(0) { } ["schema_fields_sql"]=> array(1) { ["base table"]=> array(8) { [0]=> string(3) "tid" [1]=> string(3) "vid" [2]=> string(4) "name" [3]=> string(11) "description" [4]=> string(6) "format" [5]=> string(6) "weight" [6]=> string(8) "language" [7]=> string(9) "i18n_tsid" } } ["token type"]=> string(4) "term" ["access callback"]=> string(31) "entity_metadata_taxonomy_access" ["creation callback"]=> string(29) "entity_metadata_create_object" ["save callback"]=> string(18) "taxonomy_term_save" ["deletion callback"]=> string(20) "taxonomy_term_delete" ["view callback"]=> string(27) "entity_metadata_view_single" ["form callback"]=> string(34) "entity_metadata_form_taxonomy_term" ["configuration"]=> bool(false) } I supposed this is related with something missing in the database. But I can't find it. Any help, please? Thanks in advance.