php - file_get_contents () of soortgelijke functie

Ik gebruik file_get_contents() om een ​​lijst met provincies op te halen die ik heb opgeslagen in een .txt-bestand. Elke provincie staat op zijn eigen lijn.

Is er een manier om citaten rond elk item toe te voegen en vervolgens een komma die erop volgt binnen de functie? Een beperking die ik heb is dat deze binnen de functie moet worden ingevuld en dat dit geen twee afzonderlijke opdrachten kunnen zijn.

Kan dit worden gedaan?

Of moet ik hiervoor naar een andere functie kijken?

1
@Jleagle @DaveRandom; Ik bewerk een toepassing van die van ons en we mogen alleen een specifiek bestand bewerken om een ​​extra veld aan een formulier toe te voegen. Dit bestand wordt gepakt door een ander bestand dat de regels vertaalt en er iets mee doet om de velden te vullen (waarvoor we geen autorisatie hebben om dat bestand te openen). Hierdoor wordt de bewerking verbroken door andere aanvullende opdrachten toe te voegen.
toegevoegd de auteur Mechaflash, de bron
Enige reden waarom dit een downvote ontving?
toegevoegd de auteur Mechaflash, de bron
Eén beperking die ik heb is dat deze binnen de functie moet worden ingevuld - waarom? Wat is het eindresultaat dat u hier wilt: schrijft u naar een CSV of zoiets?
toegevoegd de auteur DaveRandom, de bron
Wat bedoel je twee afzonderlijke opdrachten?
toegevoegd de auteur xdazz, de bron
Waarom kun je geen twee functies gebruiken?
toegevoegd de auteur 472084, de bron
Misschien vanwege de vreemde eisen om het tot één functie te beperken. (Ik heb niet downvote).
toegevoegd de auteur middus, de bron

4 antwoord

$countries = file('countries.txt');//get country list into an array

$fixed_countries = array_map(function($v) { return '"' . trim($v) . '",'; }, $countries);
3
toegevoegd
Ik ging door en gebruikte een batch-script om mijn lijst opnieuw te vullen met de juiste citaten en komma's, het bestand opnieuw naar de server te sturen en vervolgens file() te gebruiken om de array te vullen. Werkte als een charme. Bedankt
toegevoegd de auteur Mechaflash, de bron

Zeker.

$countries = explode("\n",'"'.str_replace("\n","\",\n\"",file("countries.txt")));

Dat zou het bestand als volgt moeten converteren:

country1
country2
...

in een array als deze:

array('"country1",','"country2",',...).

Dat is wat je wilt, toch?

1
toegevoegd
Het resultaat hiervan is array (0 => '' Array ') omdat u een array aan een tekenreeks toevoegt.
toegevoegd de auteur DaveRandom, de bron

Je kunt het vrij gemakkelijk doen, en het is nog beter als je file in plaats van file_get_contents :

$callback = create_function('$c', 'return "\"".trim($c)."\"";');
$countries = array_map($callback, file('countries.txt'));
return implode(', ', $countries);

I have written $callback with a syntax that is valid for PHP < 5.3; it's also possible to write it as an anonymous function:

$callback = function($c) { return '"'.trim($c).'"'; };

See it in action.

1
toegevoegd
Downvoter: help me alstublieft om dit antwoord te verbeteren door een reactie achter te laten.
toegevoegd de auteur Jon, de bron

Als u iets regel voor regel leest, bestand is meer geschikt dan file_get_contents :

echo implode(',',
             array_map(function($county) {return '"' . trim($county) . '"';}),
                       file('counties.txt'));
0
toegevoegd
Ik wil dit antwoord graag verbeteren. Wat is er mis mee?
toegevoegd de auteur phihag, de bron