Explode probleem
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
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!
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:
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
Maar het bizarre is juist dat hij het wel doet als ik het hard-coded erin zet, maar niet als ik een variable gebruik.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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>';
?>
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>';
?>
Voorbeeldje wat hier prima werkt:
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
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;
?>
$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
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.
Zit er geen html omheen ofzo?
Er stond geen HTML omheen, maar wel een 2 spaties aan het eind, en daarop pakte hij hem dus niet.
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.
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.
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.
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.