Niet alle lege values zijn verwijderd
Ik zie door het bos de bomen even niet meer...
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
33
34
35
36
37
38
39
40
41
42
43
44
45
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
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
// Start een nieuwe sessie
session_start();
// URL naar het menu
$menu_link = 'https://www.fresh-food-service.be/menus';
// Get contents
$text = file_get_contents($menu_link);
// Alleen gegevens in <table>
$regex = '#<\s*?table\b[^>]*>(.*?)</table\b[^>]*>#s';
$code = preg_match($regex, $text, $matches);
$table = $matches[0];
// Splits in delen om elke dag apart te hebben
$parts = preg_split('@(?=<td)@', $table);
// Elk deel controleren...
foreach ($parts as $part){
// ... tags verwijderen behalve <br>
$part = strip_tags($part, '<br>');
// ... <br> omzetten naar 1 spatie
$part = preg_replace("/<br\W*?\/>/", " ", $part);
// Explodeer elke nieuwe lijn
$exp = explode("\n", $part);
// Elke lijn controleren ...
foreach ($exp as $key => $string){
// ... Spaties en nieuwe lijnen verwijderen
$string = trim(preg_replace('/\s\s+/', '', $string));
// Lege values verwijderen
if (empty($string)){
unset($exp[$key]); // Verwijderen
}
}
// Filteren
$exp = array_filter($exp, 'strlen');
// Tonen
print '<pre>'.PHP_EOL;
var_dump($exp);
print '</pre>'.PHP_EOL;
}
?>
// Start een nieuwe sessie
session_start();
// URL naar het menu
$menu_link = 'https://www.fresh-food-service.be/menus';
// Get contents
$text = file_get_contents($menu_link);
// Alleen gegevens in <table>
$regex = '#<\s*?table\b[^>]*>(.*?)</table\b[^>]*>#s';
$code = preg_match($regex, $text, $matches);
$table = $matches[0];
// Splits in delen om elke dag apart te hebben
$parts = preg_split('@(?=<td)@', $table);
// Elk deel controleren...
foreach ($parts as $part){
// ... tags verwijderen behalve <br>
$part = strip_tags($part, '<br>');
// ... <br> omzetten naar 1 spatie
$part = preg_replace("/<br\W*?\/>/", " ", $part);
// Explodeer elke nieuwe lijn
$exp = explode("\n", $part);
// Elke lijn controleren ...
foreach ($exp as $key => $string){
// ... Spaties en nieuwe lijnen verwijderen
$string = trim(preg_replace('/\s\s+/', '', $string));
// Lege values verwijderen
if (empty($string)){
unset($exp[$key]); // Verwijderen
}
}
// Filteren
$exp = array_filter($exp, 'strlen');
// Tonen
print '<pre>'.PHP_EOL;
var_dump($exp);
print '</pre>'.PHP_EOL;
}
?>
Gewijzigd op 22/02/2019 15:53:01 door G P
Uitleg : https://word.tips.net/T001081_Inserting_a_Non-Breaking_Space.html
Da's in de html als spatie zichtbaar, maar in de DOM als
Je zou dus daarop moeten controleren :
https://everythingfonts.com/ascii/codes/160
Gewijzigd op 22/02/2019 16:30:17 door Adoptive Solution
In de broncode staat ook een gewone lege spatie. Indien het als zou zijn dan zou ik dit zien in de broncode. Echter is in de broncode ook niet te zien dat het een nieuwe lijn is maar de spatie word toch weergegeven als 2 tekens.
Enniewee
Je zou deze regel kunnen vervangen door
door
//hm, die non-breakable wordt niet weergegeven zo te zien; als je deze tekst quote kun je 'm misschien wel correct kopiëren; anders even uit je menus.html kopiëren.
Gewijzigd op 22/02/2019 17:11:57 door Rob Doemaarwat
menus.html is niet mijn website anders had ik het wel gemaakt in een xml file :)
Gewijzigd op 25/02/2019 19:28:22 door G P