[php] substr werkt niet goed

Pagina: 1
Acties:

  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 19:32
als ik in een script van een stuk teks de eerste 4 letter weg wil laten gebruik ik altijd.
PHP:
1
<?$newtekst=substr($tekst,4);?>

maar dan gat hij nu ineens heel raar doen.

als ik deze tekst heb.

<td>alex
<td>alex
<td>alex
<td>alex
<td>alex

en hier zal ik dan die substr regel van hier boven op loslaten dan krijg ik.

alex
alex
alex
alex
alex

Hoort dit want ik wil eigelijk dat alleen de eerst regel bij de 5de char begint?

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


Verwijderd

positie 0 = het eerste karakter
4 betekent een offset van 4, dus hij slaat de eerste 4 over

  • Grum
  • Registratie: Juni 2001
  • Niet online
erm :?

ik heb er geen last van hoor :)
PHP:
1
<?$theString = "<td>alex\n<td>alex\n<td>alex\n<td>alex\n<td>alex"; print "Before: <pre>". htmlentities($theString). "</pre>"; $theString = substr($theString, 4); print "After: <pre>". htmlentities($theString). "</pre>";?>

nu zie IK iig dit in me browser:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Before: 

<td>alex
<td>alex
<td>alex
<td>alex
<td>alex

After: 

alex
<td>alex
<td>alex
<td>alex
<td>alex

  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 19:32
ik zal het compleet uitleggen, met voorbeelden misschien heb ik zelf wel een fout gemaakt.

op de server laat ik via de volgende cronjob een tv-gids rippen.
code:
1
2
3
4
5
6
7
8
9
10
#/bin/bash
lynx -dump http://www.shoq.com/tv/index.php|\
(while read -r i; do
if [ "$i" == "References" ]
then exit
fi
echo $i|\
sed -e "s/^\\[[0-9]\]\\[//"|\
sed -e "s/\.jpg\]//"
done)

deze word dan in een file gezet.
code:
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
46
47
48
<td></td>
<td>[1]ShoqTV v2</td>
<td></td>
<td>Nederland 1</td>
<td>07:00 Journaal</td>
<td>07:05 Ontbijt tv</td>
<td>07:15 Sportjournaal</td>
<td>07:19 Ontbijt tv</td>
<td>07:30 Journaal</td>
<td>07:38 Ontbijt tv</td>
<td>07:43 Sportjournaal</td>
<td>07:47 Ontbijt tv</td>
<td>08:08 Ontbijt tv</td>
<td>08:15 Sportjournaal</td>
<td>08:35 NL Net</td>
<td>09:00 Journaal</td>
<td>09:08 Nederland in beweging</td>
<td>09:22 Get the picture</td>
<td>09:47 Alle dieren tellen mee</td>
<td>10:12 Man bijt hond</td>
<td>10:35 Gezondheidsplein</td>
<td>11:00 Hoge bomen</td>
<td>11:40 De heilige koran</td>
<td>11:45 Het offerfeest</td>
<td>12:10 Konya: de stad van Jalaluddin Rumi</td>
<td>12:40 De rijdende rechter</td>
<td>13:30 Stand.nl</td>
<td>13:57 Tekst tv</td>
<td>14:35 Tien voor taal</td>
<td>15:20 Smarttest</td>
<td>15:45 10 lastige vragen</td>
<td>16:00 Journaal</td>
<td>16:08 NL Net</td>
<td>16:30 De wandeling</td>
<td>17:00 Journaal</td>
<td>17:13 Magische momenten</td>
<td>18:05 Alle dieren tellen mee</td>
<td>18:33 Smarttest</td>
<td>19:00 Man bijt hond</td>
<td>19:30 Get the picture</td>
<td>20:00 Journaal</td>
<td>20:30 Netwerk</td>
<td>21:00 Blik op de weg</td>
<td>21:35 Wie is de Mol</td>
<td>22:35 ER</td>
<td>23:25 The district</td>
<td>00:13 Krachtstroom</td>
<td>00:40 Netwerk</td>

dan gebruik ik dan dit op
PHP:
1
<?$fd = fopen ("tvgids.txt", "r");while (!feof ($fd)) {    $buffer = fgets($fd, 10000);    $buffer = nl2br($buffer);    $buffer = substr ($buffer, 4);          echo $buffer;}fclose ($fd);?>

en daar komt dan dit uit.
code:
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
46
47
48
</td><br />
[1]ShoqTV v2</td><br />
</td><br />
Nederland 1</td><br />
07:00 Journaal</td><br />
07:05 Ontbijt tv</td><br />
07:15 Sportjournaal</td><br />
07:19 Ontbijt tv</td><br />
07:30 Journaal</td><br />
07:38 Ontbijt tv</td><br />
07:43 Sportjournaal</td><br />
07:47 Ontbijt tv</td><br />
08:08 Ontbijt tv</td><br />
08:15 Sportjournaal</td><br />
08:35 NL Net</td><br />
09:00 Journaal</td><br />
09:08 Nederland in beweging</td><br />
09:22 Get the picture</td><br />
09:47 Alle dieren tellen mee</td><br />
10:12 Man bijt hond</td><br />
10:35 Gezondheidsplein</td><br />
11:00 Hoge bomen</td><br />
11:40 De heilige koran</td><br />
11:45 Het offerfeest</td><br />
12:10 Konya: de stad van Jalaluddin Rumi</td><br />
12:40 De rijdende rechter</td><br />
13:30 Stand.nl</td><br />
13:57 Tekst tv</td><br />
14:35 Tien voor taal</td><br />
15:20 Smarttest</td><br />
15:45 10 lastige vragen</td><br />
16:00 Journaal</td><br />
16:08 NL Net</td><br />
16:30 De wandeling</td><br />
17:00 Journaal</td><br />
17:13 Magische momenten</td><br />
18:05 Alle dieren tellen mee</td><br />
18:33 Smarttest</td><br />
19:00 Man bijt hond</td><br />
19:30 Get the picture</td><br />
20:00 Journaal</td><br />
20:30 Netwerk</td><br />
21:00 Blik op de weg</td><br />
21:35 Wie is de Mol</td><br />
22:35 ER</td><br />
23:25 The district</td><br />
00:13 Krachtstroom</td><br />
00:40 Netwerk</td><br />

dus inplaats van alleen de eerst regel pakt hij alle regels en haalt daar de eerst 4 chars van weg.

misschien dat dit een beter overzicht geeft van me probleem.

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op zaterdag 09 maart 2002 11:30 schreef Mr-FaTMeN het volgende:
<SNIP> VEEL TEKST </SNIP>
PHP:
1
<?$fd = fopen ("tvgids.txt", "r");while (!feof ($fd)) {    $buffer = fgets($fd, 10000);    $buffer = nl2br($buffer);    $buffer = substr ($buffer, 4);    echo $buffer;}fclose ($fd);?>

en daar komt dan dit uit.
<SNIP> NOG MEER TEKST </SNIP>

dus inplaats van alleen de eerst regel pakt hij alle regels en haalt daar de eerst 4 chars van weg.

misschien dat dit een beter overzicht geeft van me probleem.
Logisch... aangezien fgets bij regel einde of bij de 10000 (in jouw geval) characters stopt.

Die waarde wordt elke keer in $buffer geplaatst en met substr geknipt.
Door de while loop wordt elke regel dus afzonderlijk opgehaald.
edit:

Oops layout ging op zijn bek

Programmer - an organism that turns coffee into software.


Verwijderd

dan dus maar zo?
PHP:
1
<?$fd = fopen ("tvgids.txt", "r");$i=0;while (!feof ($fd)) {       $buffer = fgets($fd, 10000);       $buffer = nl2br($buffer);       if($i == 0){$buffer = substr ($buffer, 4);}   echo $buffer;   $i++;}fclose ($fd);?>
Pagina: 1