Vinnaren i pepparkakshustävlingen!
2017-03-29, 14:02
  #1
Medlem
mbrodins avatar
Tjena!

Jag hittade inte någon liknande tråd, och skapar därför ett.

Okej så här är det.. jag tänkte dra ihop ett ämne för att lista alla slags användbara funktioner i PHP.

Om du har en funktion som du gärna delar med dig av och som andra kanske kan ha nytta av så passar den här. Då behöver man inte uppfinna hjulet på nytt, så att säga.

Glöm inte att lägga in [ code ] ... [/ code ] eller [ php ] ... [ /php ] taggarna mellan blocken.

Berätta gärna vad den gör, hur man ska göra för att få önskat resultat, vad som kan bli fel osv.
Du kan beskriva det utanför koden eller i kodblocken som kommentar ovanför funktionen.

Jag börjar med en av mina funktioner:

Kod:
<?php

/**
Takes $str and splits up each word,
or a whole string-series within " ... "/' ... '
if added and output it as array.

The function can find every single characters even those
that aren't UTF-8 since the parser just look for [^\s].

@author mbrodin
*/
function split_string($str){
$bits = [];

  if(
preg_match_all('/\(([^\(\)]+)\)|([^\s]+\([^\(\)]+\))|[+-]?"([^"]+)"|[+-]?\'([^\']+)\'|([^\s]+)/'trim($str), $matchesPREG_SET_ORDER)){

    foreach(
$matches as $m){

      if(isset(
$m[5])){
      
$bits[] = $m[5];    
      }
      elseif(isset(
$m[4])){
      
$bits[] = $m[4];    
      }
      elseif(isset(
$m[3])){
      
$bits[] = $m[3];    
      }
      elseif(isset(
$m[2])){
      
$bits[] = $m[2];    
      }
      else{
      
$bits[] = $m[1];    
      }
    }
  }

return 
$bits;
}

?>
.
.
.
.
Kod:
var_dump(split_string('"The quick brown fox" jumps over "the lazy dog" 123 a b c')); 

Kod:
array(8) {
  [0]=>
  string(19) "The quick brown fox"
  [1]=>
  string(5) "jumps"
  [2]=>
  string(4) "over"
  [3]=>
  string(12) "the lazy dog"
  [4]=>
  string(3) "123"
  [5]=>
  string(1) "a"
  [6]=>
  string(1) "b"
  [7]=>
  string(1) "c"
}
.
.
.
.
Kod:
var_dump(split_string('(13 + 13) - 17 + f(x ^ 10) * (10) ^ 100')); 

Kod:
array(9) {
  [0]=>
  string(7) "13 + 13"
  [1]=>
  string(1) "-"
  [2]=>
  string(2) "17"
  [3]=>
  string(1) "+"
  [4]=>
  string(9) "f(x ^ 10)"
  [5]=>
  string(1) "*"
  [6]=>
  string(2) "10"
  [7]=>
  string(1) "^"
  [8]=>
  string(3) "100"
}

Happy coding!
__________________
Senast redigerad av mbrodin 2017-03-29 kl. 14:15.
Citera
2017-03-29, 14:07
  #2
Medlem
Diverges avatar
Varför inte bara köra explode();?
Citera
2017-03-29, 14:19
  #3
Medlem
mbrodins avatar
Citat:
Ursprungligen postat av Diverge
Varför inte bara köra explode();?

Det ser du nog själv varför i koden undertill, inte samma resultat.
.
.
.
.
Kod:
var_dump(explode(' ''"The quick brown fox" jumps over "the lazy dog" 123 a b c')); 
Kod:
array(13) {
  [0]=>
  string(4) ""The"
  [1]=>
  string(5) "quick"
  [2]=>
  string(5) "brown"
  [3]=>
  string(4) "fox""
  [4]=>
  string(5) "jumps"
  [5]=>
  string(4) "over"
  [6]=>
  string(4) ""the"
  [7]=>
  string(4) "lazy"
  [8]=>
  string(4) "dog""
  [9]=>
  string(3) "123"
  [10]=>
  string(1) "a"
  [11]=>
  string(1) "b"
  [12]=>
  string(1) "c"
}
Citera
2017-03-29, 14:45
  #4
Medlem
Citat:
Ursprungligen postat av mbrodin
Det ser du nog själv varför i koden undertill, inte samma resultat.

Följande lösning från http://stackoverflow.com/questions/2...-a-single-word fungerar fint...
Kod:
$string '"The quick brown fox" jumps over "the lazy dog" 123 a b c';

var_dump(str_getcsv($string' ')); 

ger

Kod:
array(8) {
  [0]=>
  string(19) "The quick brown fox"
  [1]=>
  string(5) "jumps"
  [2]=>
  string(4) "over"
  [3]=>
  string(12) "the lazy dog"
  [4]=>
  string(3) "123"
  [5]=>
  string(1) "a"
  [6]=>
  string(1) "b"
  [7]=>
  string(1) "c"
}

...Det accepterade svaret använder dessutom preg_match_all som din funktion med med en något elegantare regex.

Din trådstart har väl en god tanke, men hela PHP-manualen är en förteckning över användarbara funktioner, beroende på vad man vill göra.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback