login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP string (Opgelost)

Offline sanderrebry - 23/03/2016 12:54
Avatar van sanderrebryLid Beste,

Graag had ik geweten om een waarde uit een string te nemen.
Voorbeelden:
16 - (8 prints) > waarde 8
12 - (2 prints) > waarde 2
115 - (10 prints) > waarde 10
Telkens wil ik de waarde die tussen de haakjes zit voor de prints
Ik dacht aan de functie explode of kan dit gemakkelijker?
Als een begonnen met een stukje code:
  1. $value = "16 - (8 prints)";
  2. $pieces = explode("-", $value);
  3. array($pieces);
  4. $new = $pieces[1];
  5. $pieces2 = explode(" ", $new);
  6. print_r($pieces2);



Mvg,
Sander Rebry

5 antwoorden

Gesponsorde links
Offline Wijnand - 23/03/2016 14:33
Avatar van Wijnand Moderator Dit kun je regelen met een regex:

  1. <?php
  2. echo preg_replace('/.*\(([0-9]+) prints\).*/i', '$1', $value);
  3. ?

Offline Thomas - 23/03/2016 15:38 (laatste wijziging 23/03/2016 15:40)
Avatar van Thomas Moderator Dat is een oplossing voor het directe probleem.

Maar zoals ik het zie creëer je dit probleem zelf doordat er geen structuur zit in je gegevens, deze hengel je uit een platte tekst. Nadat je deze data eerst zelf in een platte tekst had gestopt?

Waar komt deze data "16 - (8 prints)" vandaan?
Stel je deze zelf op?
Waarvoor gebruik je deze data?
Welke betekenis heeft deze data?

Kun je een schets geven in welke context je deze code gebruikt? Komt dit uit een applicatie? Ben je een webpagina aan het scrapen? Is dit een huiswerkopdracht? Wat ben je aan het doen?

@Wijnand ik denk trouwens dat je preg_match bedoelt, en niet preg_replace .
Offline Wijnand - 23/03/2016 16:18
Avatar van Wijnand Moderator @Thomas,

Nee, preg_replace, want dan krijg je de waarde terug en dat is wat hij wilde ("een waarde uit een string te nemen.")
Offline Thomas - 23/03/2016 17:28 (laatste wijziging 23/03/2016 20:32)
Avatar van Thomas Moderator
Wijnand schreef:
een waarde uit een string te nemen.

Mja, opvragen, niet vervangen of verwijderen.

Opvragen doe je met preg_match:
  1. <?php
  2. $input = '16 - (8 prints)';
  3.  
  4. preg_match('#^[0-9]+ - \(([0-9]+) prints\)$#', $input, $matches);
  5.  
  6. echo '<pre>'.print_r($matches, true).'</pre>';
  7. // de gewenste waarde zit na afloop in $matches[1] als de "patroonherkenning" was gelukt
  8. ?>

De topicstarter wil volgens mij weten welke waarde "$1" hééft, niet "$1" vervangen door iets anders ($value)... Ik zie niet hoe je dat met jouw code kunt doen?

Lees de oorspronkelijke vraag nog eens:
invoer: 16 - (8 prints)
uitvoer: 8

invoer: 12 - (2 prints)
uitvoer: 2

invoer: 115 - (10 prints)
uitvoer: 10

Algemeen:
invoer: X - (Y prints)
uitvoer: Y

En als je die string dan toch zelf aan het opbouwen was, zou ik dat niet met preg_replace doen .
Bedankt door: sanderrebry
Offline sanderrebry - 25/03/2016 10:56
Avatar van sanderrebry Lid Beste,

Het is inderdaad input dat ik zelf kan ingeven.
De bedoeling is eigenlijk dat er vanuit een dropdown verschillende selecties mogelijk zijn.
Voorbeeld:
Aantal pagina's: > 8 - (4 prints)
Ik heb dit tussen haakjes geplaatst omdat het anders te verwarrend overkomt en ik heb het aantal van de prints nodig om het max. aantal files te laten uploaden in een script vandaar dus.
Nu ik heb het script even getest en kom iedere keer het aantal prints uit dus het werkt voor mij.
Van harte bedankt! 

Mvg,
sander
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s