Ik ben bezig met het opslaan van meldingen vanuit een rss feed. Nu wil ik de inhoud van de Rss feed eerst wat aanpassen voor het word opgeslagen. Ik heb bijvoorbeeld:
25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217
Nu wil ik alleen opslaan 25-901 A1 ALMERE Leeuwerikweg
Dus alles na het woord COORD moet worden verwijderd, is dit mogelijk en zo ja met welke functie???
Kan inderdaad ook, al zou ik het in 1 regel doen:
<?php
$str = '25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217';
$str = reset(explode('COORD',$str));
echo $str;
?>
Of, wat mogelijk is sinds PHP5.4:
<?php
$str = '25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217';
$str = explode('COORD',$str)[0];
<?php
$str = '25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217';
$str = reset(explode('COORD',$str));
echo $str;
?>
Incorrect: op het eerste gezicht lijkt dit te kloppen, maar als je het uittest dan krijg je een keiharde foutmelding (Strict Standards: Only variables should be passed by reference). Zou je reset() op een nieuwe regel plaatsen, dan werkt het wel.
<?php
$str = '25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217';
$str = current(explode('COORD',$str));
echo $str;
?>
Ach, jou oplossing kan misschien wel leuk en goed zijn (niet echt snel, maar dat is mijn PREG oplossing ook niet), maar het lost totaal niet op wat de TS vraagt. Want op deze manier kun je nooit alles na een woord weghalen.
Als je de oplossing van Roy wilt gebruiken met meerdere woorden kun je zoiets doen:
<?php
function filter_word($str, $filters)
{
if (!is_array($filters)) {
$filters = array($filters);
}
Of met mijn PREG oplossing (trager, die van Roy is de beste):
<?php
function filter_word($str, $filters)
{
if (!is_array($filters)) {
$filters = array($filters);
}
Het enige verschil tussen de, snellere, oplossing van Roy en die van mij is dat die van mij tot aan de linebreak gaat. Dat kan heel handig zijn, denk bijv. als je een string hebt waarin meerdere regels zitten en je elke regel wilt verwijderen achter COORD:
<?php
$text = '25-901 A1 ALMERE Leeuwerikweg COORD M 14 B RIT:217
21-486 D26 AMSTERDAM Rembrandtlaan COORD M 12 B RIT:172';