Versio

Explode probleem

Overzicht Reageren

Nicoow Unknown

Nicoow Unknown

17/08/2010 22:07:09
Quote Anchor link
Beste mensjes, (ja, voor mij zijn jullie mensjes, de meeste dan)

Ik ben na lange tijd weer eens terug bij het PHP programmeren.
Nu heb ik alleen een klein probleempje met de explode functie.

ik heb nu een stuk text, bijvoorbeel.
Quote:
Dit is een voorbeeld tekst, waaruit ik een bepaald stukje tekst.
Zoals bijvoorbeeld de zin Stranger THINGS Have Happened, dit wil ik over houden


Nu wil ik dus alles na Stranger THINGS Have Happened overhouden.
Toevallig weet ik al dat het die zin is, want die is hiervoor al bepaald, alleen staat er dan "Stranger Things Have Happened".
Dus ik dacht in eerste instantie, PHP is niet zo pietluttig met hoofdletters,
$retval = explode($title, $text);
print_r($retval);
Helaas stond alles nog in 1 stuk.
Dus goed, ik ga er vanuit dat het hoofdletter gevoelig is, dus ik keurig alle 2 de waarden strtolower, en het zou moeten werken.
Maar helaas nogsteeds niet.

Nu heb ik de strtolower versie even geprint, en die hard-coded in de explode gezet.
Tot mijn stomme verbasing, werkt dit wel.
Heeft iemand hier een verklaarbare reden voor, en eigenlijk iets belangrijker, een oplossing?

Alvast Bedankt!
 
PHP hulp

PHP hulp

24/05/2012 14:50:31
Gesponsorde koppelingen:
 
Danny Roelofs

Danny Roelofs

17/08/2010 22:21:52
Quote Anchor link
De syntax van explode
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
array explode  ( string $delimiter  , string $string  [, int $limit  ] )
?>


Als je de delimiter zet op een spatie ofwel $delimiter = " " en de $string gebruikt voor de invoer van je tekst zal de uitkomt, een array voorzien zijn van alle gegevens die door een spatie waren gescheiden.

Kortom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$a_Data
= explode (' ','Dit is een zin');
var_dump($a_Data);
?>


Want het lijkt er op dat je de functie explode() niet toepast zoals je hem zou behoren toe te passen. want een delimiter is dat gene wat de string doet scheiden van elkaar en elke segment in de array stopt onder een nieuwe key.
Gewijzigd op 17/08/2010 22:23:38 door Danny Roelofs
 
Nicoow Unknown

Nicoow Unknown

17/08/2010 23:05:23
Quote Anchor link
Dan doe ik het toch aardig goed, als ik de tekst wil scheiden op de title.
Maar het bizarre is juist dat hij het wel doet als ik het hard-coded erin zet, maar niet als ik een variable gebruik.
 
- SanThe -

- SanThe -

17/08/2010 23:32:40
Quote Anchor link
Werkt gewoon.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$var = 'Dit is een voorbeeld tekst, waaruit ik een bepaald stukje tekst.
Zoals bijvoorbeeld de zin Stranger THINGS Have Happened, dit wil ik over houden'
;

$arr = explode(strtolower('Stranger Things Have Happened'), strtolower($var));

echo '<pre>'.print_r($arr,true).'</pre>';

?>
 
Danny Roelofs

Danny Roelofs

17/08/2010 23:38:30
Quote Anchor link
Dit is dan een voorbeeldje wat werkt, zei het natuurlijk een basis, uiteindelijk zou je ook met regulare expressie's kunnen werken, maar dit gaat dan even om het feit hoe explode wel werkt.

Voorbeeldje wat hier prima werkt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    $zin
= "Dit is een voorbeeld tekst, waaruit ik een bepaald stukje tekst.
                Zoals bijvoorbeeld de zin Stranger THINGS Have Happened,
                 dit wil ik over houden"
;

        $a_Data = explode (' ',$zin);

        $s_Gezocht = 'tHiNgs'; // zoektocht is niet hoofdletter gevoelig, dus deze zoekstring kan.
        $b_Found = 0;
        foreach ($a_Data as $s_Content)
        {

            
            if (strcasecmp($s_Gezocht, $s_Content)==0)
            {

                $b_Found = 1;
            }

            if ($b_Found == 1)
            {

                $s_Result .= $s_Content.' '; // ik voeg er nu dan weer een spatie bij
            }

        }

        echo $s_Result;
?>
Gewijzigd op 17/08/2010 23:39:08 door Danny Roelofs
 
Nicoow Unknown

Nicoow Unknown

18/08/2010 13:05:34
Quote Anchor link
Ik denk dat je mij bedoeling verkeerd begrijpt,
Het is de bedoeling dat hij het deel na "Stranger THINGS Have Happened" pakt,
dus "dit wil ik over houden".
Dus nu wil ik hem exploden op "Stranger THINGS Have Happened" en dan zou het gedeelte erna dus in de array moeten staan als los item.
 
Karl Karl

Karl Karl

18/08/2010 13:06:42
Quote Anchor link
Zit er geen html omheen ofzo?
 
Nicoow Unknown

Nicoow Unknown

18/08/2010 13:12:44
Quote Anchor link
@Karl, bedankt voor de hint,
Er stond geen HTML omheen, maar wel een 2 spaties aan het eind, en daarop pakte hij hem dus niet.
 
Karl Karl

Karl Karl

18/08/2010 13:14:52
Quote Anchor link
Nico Kaag op 18/08/2010 13:12:44:
@Karl, bedankt voor de hint,
Er stond geen HTML omheen, maar wel een 2 spaties aan het eind, en daarop pakte hij hem dus niet.


Mooi :-).
Eigenlijk bedoelde ik, als het tussen html tags staat, dan kan je met DOM makkelijk filteren.
 
Danny Roelofs

Danny Roelofs

18/08/2010 13:24:21
Quote Anchor link
Nico Kaag op 18/08/2010 13:05:34:
Ik denk dat je mij bedoeling verkeerd begrijpt,
Het is de bedoeling dat hij het deel na "Stranger THINGS Have Happened" pakt,
dus "dit wil ik over houden".
Dus nu wil ik hem exploden op "Stranger THINGS Have Happened" en dan zou het gedeelte erna dus in de array moeten staan als los item.


En die van @San dan, had je die al geprobeerd? want die werkt wel.
 



Overzicht Reageren

Get Adobe Flash player