| 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! Post your PHP questions here! |
 |

21-05-2010, 18:28
|
|
simms
Registrierter Benutzer
|
|
Registriert seit: Jun 2006
Beiträge: 11
|
|
Text zwischen zwei Strings auslesen
Hallo zusammen,
also kurz zum vorab, ich weiß es gibt die Funktion "erstes Zeichen suchen", aber ich glaub damit komme ich nicht weiter.
Ich möchte das ein Text geparst wird wenn er in bestimmten Textblöcken steht.
Mein Beispieltext:
Unser aktueller Umsatz liegt bei [SQLDB1]select * from Umsatz[/SQLDB1], wir haben dabei folgende Kunden [SQLDB1]select * from Kunden[/SQLDB1] aus folgendenen Städten: [SQLDB1]select * from Staedte[/SQLDB1].
Das ist ein sinnfreies Beispiel!!
Ich möchte also am Ende in einem Array stehen haben
$SQLDB1[0] = select * from Umsatz
$SQLDB1[1] = select * from Kunden
$SQLDB1[2] = select * from Staedte
Ich möchte eigentlich ungern die Position aufwendig mit strpos auszählen.
Vielleicht gibt es ja ein Beispiel ala
while(text_enthält($suchbegriff1,$suchbegriff2,$ursprungstext,$dann_hierrein_damit)
{
echo $dann_hierrein_damit
}
wäre cool wenn mir einer weiterhelfen könnte.
Vielen Dank im vorraus.
|

21-05-2010, 18:36
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
hast du dich schonmal mit regulären Ausdrücken beschäftigt? Die Funktion preg_split ist imho dafür die beste Wahl.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

21-05-2010, 18:57
|
|
simms
Registrierter Benutzer
|
|
Registriert seit: Jun 2006
Beiträge: 11
|
|
$string = "textausgabe1und dann textausgabe2";
$array = preg_split('/\[b\](.*?)\[\/b\]/',$string);
var_dump($array);
es sollte eigentlich textausgabe1 und textausgabe2 rauskommen, aber irgendwie tuts nicht :/
|

21-05-2010, 19:01
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von simms
es sollte eigentlich textausgabe1 und textausgabe2 rauskommen
|
Eigentlich sollte da viel mehr rauskommen, aber erzähl mal, was du bekommst und was du gerne hättest. Hast du dir den Modifier PREG_SPLIT_DELIM_CAPTURE schon angesehen?
Es kann auch sein, dass preg_match_all für dich besser passt, aber das musst du wissen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (21-05-2010 um 19:04 Uhr)
|

21-05-2010, 19:12
|
|
simms
Registrierter Benutzer
|
|
Registriert seit: Jun 2006
Beiträge: 11
|
|
das Delim Capture nützt mir eigentlich nichts, die [b] Dinger brauch ich nicht.
Also in meinen Beispiel bekomme ich als Ergebniss:
PHP-Code:
$string = "[b]textausgabe1[/b]und nun ist [b]textausgabe2[/b] und auch noch [b]textausgabe32[/b]";
$array = preg_split('/\[b\](.*?)\[\/b\]/',$string);
var_dump($array);
Ergebniss:
und nun ist
und auch noch
Aber ich möchte eigentlich (im Grunde genau das Gegenteil:
textausgabe1
textausgabe2
textausgabe3
Geändert von simms (21-05-2010 um 19:19 Uhr)
|

21-05-2010, 19:21
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Erstens hast du den limit-Parameter ausgelassen (-1 angeben) und zweitens – wie gesagt – dann halt preg_match_all verwenden.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

21-05-2010, 19:37
|
|
simms
Registrierter Benutzer
|
|
Registriert seit: Jun 2006
Beiträge: 11
|
|
Zitat:
Zitat von AmicaNoctis
Erstens hast du den limit-Parameter ausgelassen (-1 angeben) und zweitens – wie gesagt – dann halt preg_match_all verwenden.
|
Jetzt hab ich es  .
Danke für deine Unterstützung.
PHP-Code:
$string = "[b]textausgabe1[/b]test[b]textausgabe2[/b]test[b]textausgabe3[/b]test";
preg_match_all('/\[b\](.*?)\[\/b\]/',$string,$array);
echo "<br><br><br>now the return<br>-------------------------------------------<br>";
$i = 0;
while($i<=count($array))
{
echo $array[1][$i]."<br>";
$i++;
}
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|