php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-04-2008, 21:28
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Zeichenkette trennen

Hallo,


mal wieder, warum würde ich das sonst schreiben, stehe ich vor einem grossen, schwarzen Loch.

Ich möchte gerne eine (bzw. 2 versch.) Zeichenketten aufsplitten doch irgendwie scheint mir das mit split() nicht zu gehen - jedenfalls lese ich das so aus dem manual heraus.

Die Zeichenkette kann folgende beiden Varianten haben:

16 2(2 / 0 / 0 / 0) 17 15(6 / 0 / 9 / 0)
oder
0 - 0 0(0 / 0 / 0 / 0)

Ich möchte nun aus der ersten zur weiterverarbeitung folgendes haben:
var1 = 16
var2 = 2
var3 = (2 / 0 / 0 / 0)
var4 = 17
var5 = 15
var6 = (6 / 0 / 9 / 0)

oder aus der anderen Variante

var1 = 0
var2 = -
var3 = 0
var4 = 0
var5 = (0 / 0 / 0 / 0)


Ich glaube, wie bereits erwähnt, nicht, dass ich das so mit split() hinbekomme und nun erhoffe ich mir einen guten Lösungsansatz wie ich das machen könnte.


Gruss & Danke
Mit Zitat antworten
  #2 (permalink)  
Alt 29-04-2008, 22:49
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hast du schonmal mit Regulären Ausdrücken (Regex) gearbeitet? Das scheint mir in dem Fall um Längen angebrachter, als bei diesem "Muster" einen String-Funktionen-Krampf auszuarbeiten.

Grüße
Mit Zitat antworten
  #3 (permalink)  
Alt 29-04-2008, 22:55
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ja, aber nur im 'einfachen' gebrauch, zB. um Quelltext auszulesen und eine vorher bestimmte Stelle ausfindig zu machen. Nur für solche Zwecke, also das 'handelsübliche' preg_match() ...

Sonst habe ich mich in dieser Materie bisher nicht weiter rein gelesen.

Danke für den Link, aber English kann ich besser schlecht als gut. Mach' mich also gleich auf die Suche nach etwas ähnlichem in Deutsch.

Danke schon.
Mit Zitat antworten
  #4 (permalink)  
Alt 29-04-2008, 22:56
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

@Griecherus: slpit() arbeitet mit Regex

@TS:

Da ich persöhnlich gerade nicht wüsste, wie man das ganze mit einem Regex machen kann(falls überhaupt):
Erst die Klammern rausfiltern und den Rest per Leerzeichen exploden .. allerdings musst du wissen, wo die Klammern waren, bzw. welche Zeichen davor und danach kommen, damit du im Array die Klammern wieder einfügen kannst..

mfg
Mit Zitat antworten
  #5 (permalink)  
Alt 29-04-2008, 23:01
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ich würde einen endlichen Automaten darauf ansetzen.
__________________
Wir werden alle sterben

Geändert von combie (29-04-2008 um 23:11 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 29-04-2008, 23:04
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hm..., möglich wenn auch irgendwie - so denke ich mir grade - sehr aufwändig bzw. umständlich.
Würde ich nun also aus
16 2(2 / 0 / 0 / 0) 17 15(6 / 0 / 9 / 0)
die Klammern ziehen und danach die Leerzeichen exploden bekäme ich so einiges zurück
16
2
2
/
0
/
0
/
0
17
15
6
/
0
/
9
/
0

Dass dann wieder an die richtige Stelle fummeln, die Klammern wieder einfügen, ....

Gibts da auch einen kürzeren Weg? *g*

Ansich aber schonmal eine Idee mit der ich etwas anfangen könnte - Danke!


edit:
@combie

Die Google-Suche führte mich direkt auf die Schulbank zurück
http://www.hsg-kl.de/faecher/inf/mat...einf/index.php

Manche Denker müssen echt langeweile haben wenn sie sich sowas ausdenken. *g* Scheint mir.., wie soll ich sagen, etwas zu neu und/oder hoch für mich zu sein - oder habe ich aufgrund der müdigkeit einfach Probleme beim Auffassen des Stoffs?

Geändert von medium22 (29-04-2008 um 23:11 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 29-04-2008, 23:17
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@medium:

Ich meinte die Klammern sammt Inhalt rausfiltern .. und dabei auch exploden ..

Dann hast du jeweils den Part vor und hinter einer Klammer ^^..
Kannst alles weiter exploden usw.

Aber der endliche Automat würde auch funktionieren^^


mfg
Mit Zitat antworten
  #8 (permalink)  
Alt 29-04-2008, 23:57
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Manche Denker müssen echt langeweile haben wenn sie sich sowas ausdenken. *g* Scheint mir..
Nee... das ist ein allgemein übliches Konzept.
Die meisten Parser arbeiten so.
(Der PHP Parser bestimmt auch)

Hier mal auf die Schnelle zusammengestoppelt:


PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'TRUE); // evtl. hilfreich


define('Z_INSTRING' ,0);
define('Z_INKLAMMER',1);

function 
sp_expand($string)
{
  
// $string   = trim($string);
  
$salat    str_split($string);
  
$zustand  Z_INSTRING ;
  
$zeile    '';
  
$result   = array();
  
  foreach(
$salat as $char)
  {
    switch (
$zustand)
    {
      case 
Z_INSTRING:
                  if(
$char === ' ')
                  {
                    if(
strlen($zeile)>0)
                    {
                      
$result[] = $zeile;
                      
$zeile    '';
                    }
                  }elseif(
$char === '(')
                  {
                    
$result[] = $zeile;
                    
$zeile    $char;
                    
$zustand  Z_INKLAMMER;
                  }else  
$zeile    .= $char;
                  break;

      case 
Z_INKLAMMER:
                  if(
$char === ')')
                  {
                    
$zeile   .= $char;
                    
$result[] = $zeile;
                    
$zeile    '';
                    
$zustand  Z_INSTRING;
                  }else 
$zeile    .= $char;
                  break;
    }
  }
  if(
strlen($zeile)>0$result[] = $zeile;
  return 
$result;
}

?>
<pre>
<?php
  var_export
(sp_expand('16 2(2 / 0 / 0 / 0) 17 15(6 / 0 / 9 / 0)'))
?>
</pre>
<pre>
<?php
  var_export
(sp_expand('0 - 0 0(0 / 0 / 0 / 0)'))
?>
</pre>
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 30-04-2008, 17:19
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ui - Super! Danke!

Habe das eben mal ausprobiert und trotz mehrerer verschiedener änderungen bekomme ich immer einen Fatal Error. Belasse ich es wie oben geschrieben, so ist er in Zeile 12 zu finden

Code:
Fatal error:  Call to undefined function:  str_split() in /blabla/foo/bar.php on line 12
Mit Zitat antworten
  #10 (permalink)  
Alt 30-04-2008, 18:11
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Tja..
Ich habe meine PHP4 Unterstützung vollständig eingestellt, also must du damit selber fertig werden....

Tipp 1:
Handbuch lesen!!
http://de.php.net/manual/de/function...plit.php#61928

Tipp2:
Bei dem PEAR Gedöns gibts ein "kompatibilitäts" Paket

Tipp3:
Du könntest auf eine for Schleife umbauen
__________________
Wir werden alle sterben
Mit Zitat antworten
  #11 (permalink)  
Alt 30-04-2008, 21:50
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Habs auch unter PHP4 laufen lassen, nun aber in ein Verzeichnis verschoben, welches mit der 5er-Version läuft. Da funktioniert das ganz wunderbar.


Sobald ich das ganze so habe wie ich es mir vorstelle, werde ich das hier posten.

Danke noch. :-)
Mit Zitat antworten
  #12 (permalink)  
Alt 02-05-2008, 16:13
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Aloha,


Da ich 'nur' ein Hostingpaket habe, konnte ich leider keine wesentlichen Konfigurationen ändern, also musste ich auf andere Mittel ausweichen.

Der o.g. Fehler bzgl. str_split() lies sich mittels einer zusätzlichen Funktion beheben.

PHP-Code:
if (!function_exists('str_split')) {
     function 
str_split($str) {
          
$arr = array();
          if (
is_string($str)) {
               for (
$i 0$i strlen($str); $i++) {
                    
array_push($arr$str[$i]);
               }
          }
          return 
$arr;
     }          

Danke nochmal für die Unterstützung bzw. Hilfe - funktioniert genau so wie ich mir das vorgestellt habe.
Mit Zitat antworten
  #13 (permalink)  
Alt 02-05-2008, 16:27
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von medium22
Aloha,


Da ich 'nur' ein Hostingpaket habe, konnte ich leider keine wesentlichen Konfigurationen ändern, also musste ich auf andere Mittel ausweichen.

Der o.g. Fehler bzgl. str_split() lies sich mittels einer zusätzlichen Funktion beheben.

PHP-Code:
if (!function_exists('str_split')) {
     function 
str_split($str) {
          
$arr = array();
          if (
is_string($str)) {
               for (
$i 0$i strlen($str); $i++) {
                    
array_push($arr$str[$i]);
               }
          }
          return 
$arr;
     }          

Danke nochmal für die Unterstützung bzw. Hilfe - funktioniert genau so wie ich mir das vorgestellt habe.
Da sollte meines Erachtens nach
PHP-Code:
preg_match_all('/./s'$str$matches); 
bzw.
PHP-Code:
preg_match_all('/.{1,' $split_length '}/s'$str$matches); 
(falls der optionale Parameter $split_length [siehe Manual] gewünscht wird)
performanter sein.

Grüße

Geändert von Griecherus (02-05-2008 um 16:31 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 02-05-2008, 16:30
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

EDIT:
Sorry 4 Doppelpost
Mit Zitat antworten
  #15 (permalink)  
Alt 02-05-2008, 16:43
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

@medium22
Deine Funktion entspricht deinen Anforderungen, aber nicht der Spezifikation.

Hier eine universellere:
PHP-Code:
if(!function_exists('str_split'))
{
  function 
str_split($string,$split_length=1)
  {
    
$result = array();
    for(
$i 0$i strlen($text); $i += $split_length)
      
$result[] = substr($string,$i,$split_length);
    return 
$result;
  }

__________________
Wir werden alle sterben
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:24 Uhr.