Een uitdaging met PHP
Ik heb een MySQL database met verschillende teksten erin;
-------------------------------
G ·#? >< Z*··R···$!··$!@4··$!X ·V·` /(···!·6!aQ z#`$z4`5-Eenheid: 60107q·6`:a ;3Adres: Normalaan 0=q·<` a#!2Plaats: Nieuwegein#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 14:20:39/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`
-------------------------------
E02 eenheid:1830@$adres: azielaan 420@%plaats: utrecht@ prio: p2@ tijd:12:26:06@)kaart@z*hoofdmenu@y,diagnose@p
-------------------------------
G · ? >; Z*·0%···R··0%·R··0%`*·X ·+ $(···!·1!aQ z#`$z4`5)Eenheid: 7q·6`:a ;6Adres: Dorpsstraat 67=q·<` a#!.Plaats: Wilnis#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 05:11:47/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`
--------------------------------
Zoals je kunt zien staat er iedere keer eenheid, adres, plaats, prio en tijd in. Ik wil die data die daarna staat apart in strings krijgen.
Hoe zou ik dit moeten doen?
De 3 verschillende vormen zoals hierboven komen steeds terug.
Iemand die mij kan helpen?
Met vriendelijke groet,
Daniel Hartman
Hoe heb je het geprobeerd eruit te halen ?
Ik ben benieuwd waar die data vandaan komt, is het niet handiger om het dan meteen goed in de database te plaatsen?
De data kan niet anders in de database geplaatst worden. Dit is hoe de data binnen komt en dit wordt rechtstreeks in de database geschreven dmv een simpel programmaatje.
ja dat dacht ik ook te lezen maar ik vraag het toch omdat het me anders een raar idee lijkt dat je er raar van op kijk dat het er dan zo uitkomt als het er ook zo in staat..
Ik wil een PHP script maken waardoor alleen de data die ik nodig heb eruit komt.
De teksten komen zo bij mij binnen, ik kan hier niets aan veranderen.
Wel een raar programma als die niet de tekst kan aanpassen.
krijg je ze preceis zo binnen zoals hierboven staat vermeld ?
Als het precies zo is zoals hierboven staat vraag ik me ook af met welke code ze het invoeren...
Ik kan hier echt niets aan veranderen.
Het zal dus met de data moeten zoals die nu is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$arr = array('G ·#? >< Z*··R···$!··$!@4··$!X ·V·` /(···!·6!aQ z#`$z4`5-Eenheid: 60107q·6`:a ;3Adres: Normalaan 0=q·<` a#!2Plaats: Nieuwegein#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 14:20:39/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`',
'E02 eenheid:1830@$adres: azielaan 420@%plaats: utrecht@ prio: p2@ tijd:12:26:06@)kaart@z*hoofdmenu@y,diagnose@p',
'G · ? >; Z*·0%···R··0%·R··0%`*·X ·+ $(···!·1!aQ z#`$z4`5)Eenheid: 7q·6`:a ;6Adres: Dorpsstraat 67=q·<` a#!.Plaats: Wilnis#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 05:11:47/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`');
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
$arr = array('G ·#? >< Z*··R···$!··$!@4··$!X ·V·` /(···!·6!aQ z#`$z4`5-Eenheid: 60107q·6`:a ;3Adres: Normalaan 0=q·<` a#!2Plaats: Nieuwegein#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 14:20:39/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`',
'E02 eenheid:1830@$adres: azielaan 420@%plaats: utrecht@ prio: p2@ tijd:12:26:06@)kaart@z*hoofdmenu@y,diagnose@p',
'G · ? >; Z*·0%···R··0%·R··0%`*·X ·+ $(···!·1!aQ z#`$z4`5)Eenheid: 7q·6`:a ;6Adres: Dorpsstraat 67=q·<` a#!.Plaats: Wilnis#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 05:11:47/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`');
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
Uitvoer is dit:
Quote:
Eenheid: 60107
Adres: Normalaan 0
Plaats: Nieuwegein
Prio: P2
Tijd: 14:20:39
Eenheid: 1830
Adres: azielaan 420
Plaats: utrecht
Prio: p2
Tijd: 12:26:06@
Eenheid: 7
Adres: Dorpsstraat 67
Plaats: Wilnis
Prio: P2
Tijd: 05:11:47
Adres: Normalaan 0
Plaats: Nieuwegein
Prio: P2
Tijd: 14:20:39
Eenheid: 1830
Adres: azielaan 420
Plaats: utrecht
Prio: p2
Tijd: 12:26:06@
Eenheid: 7
Adres: Dorpsstraat 67
Plaats: Wilnis
Prio: P2
Tijd: 05:11:47
Hoelang heb je er over gepuzzeld? ;-)
Kan ik dit nu ook uit de MySQL database halen?
- Aar - op 16/11/2011 15:43:17:
Hoelang heb je er over gepuzzeld? ;-)
Geen idee, half uurtje, uurtje?
Ik hou wel van dit soort onzinnige uitdagingen.
Daniel Hartman op 16/11/2011 15:48:18:
Kan ik dit nu ook uit de MySQL database halen?
Ja. $arr is in mijn script hetzelfde als drie records uit de database. Even aanpassen dus.
Wat doe ik verkeerd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$arr = array($row['melding']);
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$arr = array($row['melding']);
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
Uiteraard ook een verbinding met de database!
Gewijzigd op 16/11/2011 15:54:00 door Daniel Hartman
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
while($row = mysql_fetch_assoc($result))
{
$val = $row['melding'];
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
while($row = mysql_fetch_assoc($result))
{
$val = $row['melding'];
echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
$hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
for($i=0;$i<strlen($hlp);$i++)
{
if(!in_array(ord($hlp[$i]), $char, true)) break;
}
echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$arr = array($row['melding']);
?>
$result = mysql_query("SELECT * FROM `alarmeringen` WHERE `melding` LIKE '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());
$arr = array($row['melding']);
?>
Hoe kom je bij $row['melding']?
Je query variabele is $result en geen $row
Een gebruik geen * maar alleen de velden die je wilt ophalen.
EDIT: SanThe was eerder
Gewijzigd op 16/11/2011 16:00:24 door Maikel B
Dankjulliewel!