App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[PHP] String zwischen zwei Zeichen extrahieren
- Ersteller AMD-Hammer
- Erstellt am
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Hallo an alle!
Ich hab mal wieder eine Frage zum Thema PHP. Also ich habe einen String. Aus diesem String wuerde ich gerne zwischen einem Anfangs und einem Endzeichen den Text in eine extra variable laden.
Beispiel:
$string = "Das ist ein BEGIN Test END für P3D";
$anfang = "BEGIN";
$ende = "END";
Der Text zwischen $anfang und $ende soll extrahiert werden.
Ausgabe:
$substr = "Test"
Gibts es hierfür eine Funktion? Konnte nichts im PHP Handbuch finden? Habt Ihr eine Idee wie ihr das realisieren kann?
Ich hab mal wieder eine Frage zum Thema PHP. Also ich habe einen String. Aus diesem String wuerde ich gerne zwischen einem Anfangs und einem Endzeichen den Text in eine extra variable laden.
Beispiel:
$string = "Das ist ein BEGIN Test END für P3D";
$anfang = "BEGIN";
$ende = "END";
Der Text zwischen $anfang und $ende soll extrahiert werden.
Ausgabe:
$substr = "Test"
Gibts es hierfür eine Funktion? Konnte nichts im PHP Handbuch finden? Habt Ihr eine Idee wie ihr das realisieren kann?
versuche es mal mit preg_match
also in dem Fall von /BEGIN suchen was mittendrin ([a-z]{1,}) also allesmöglihe enthalten kann und mit END/ aufhört...
man sucht auh nach den sogenannten "regular expressions"...
die findest du hier:
http://de.wikipedia.org/wiki/Regular_Expressions
PHP:
preg_match("/BEGIN([a-z]{1,})END/",$string);
man sucht auh nach den sogenannten "regular expressions"...
die findest du hier:
http://de.wikipedia.org/wiki/Regular_Expressions
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Danke fuer den Tipp, hat mir schonmal sehr weiter geholfen. Ich hab es jetzt halbwegs hinbekommen.
Allerdings gibt es jetzt noch ein Problem! Wie mache ich es wenn dieser String mehrmals im Text ist? Er gibt immer nur den ersten aus! Mit einer While Schleife funktionierts auch nicht.
Danke im vorraus...
PHP:
$str = "Das ist ein BEGIN Test END für P3D";
preg_match_all("=BEGIN[^>](.*)END=siU", $str, $a);
echo $a[1][0];
Code:
// AUSGABE
Test
Allerdings gibt es jetzt noch ein Problem! Wie mache ich es wenn dieser String mehrmals im Text ist? Er gibt immer nur den ersten aus! Mit einer While Schleife funktionierts auch nicht.
PHP:
while (preg_match("=BEGIN[^>](.*)END=siU", $str) {
$str = "Das ist ein BEGIN Test END für BEGIN Test2 END P3D";
preg_match_all("=BEGIN[^>](.*)END=siU", $str, $a);
echo $a[1][0];
}
Danke im vorraus...
ALT255@Seti
Vice Admiral Special
Dan zerlege doch den String mit preg_split nach jedem END und bearbeite die einzlnen Teile den wie den Gesamten.
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Getreu dem Motto "Viele Wegen fuehren nach Rom" hab ich es jetzt hinbekommen. Der Tipp von ALT255@Seti hat mir den letzten entscheidenen Anstoss geben, habs jetzt
Vielen Dank
Vielen Dank
Für Dich vermutlich schon verjährt, weil andere Lösung gefunden - aber vielleicht stolpert mal jemand anders drüber.
preg_match_all ist durchaus dazu gedacht alle Treffer zu finden - und das im Grunde äußerst effizient.
Wenn ich das jetzt grad noch richtig aus meiner Erinnerung krame, dann läuft Dein
bis zum letzten END. Mit
sollte dagegen beim jeweils ersten Auftreten den jeweiligen Treffer finalisieren.
Just my 2 cents,
Tom
preg_match_all ist durchaus dazu gedacht alle Treffer zu finden - und das im Grunde äußerst effizient.
Wenn ich das jetzt grad noch richtig aus meiner Erinnerung krame, dann läuft Dein
PHP:
bla(.*)END
PHP:
bla(.*?)END
Just my 2 cents,
Tom
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Ich meinte es in dem Fall etwas anders, als von dir verstanden, aber es ist vielleicht ganz sinnvoll, wenn man hier auch die Lösung schreibt, denn so wird auch anderen geholfen.
Ich meinte, dass es ja auch vorkommen kann (um mal beim Beispiel von oben zu bleiben), dass in der String wiefolgt aussieht:
In diesem String sind nun zwei Treffer! Wenn man die einzeln isolieren, bearbeiten und wieder zusammensetzen will kann man wie folgt agieren:
Ausgabe:
Ich meinte, dass es ja auch vorkommen kann (um mal beim Beispiel von oben zu bleiben), dass in der String wiefolgt aussieht:
PHP:
$str="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. BEGIN Ut enim ad minim veniam, quis nostrud exercitation ullamco END laboris nisi ut aliquip ex ea commodo consequat. BEGIN Duis aute irure dolor in reprehenderit in voluptate velit esse END cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
PHP:
$output = "";
$count = "0";
while (isset($str[$count])) {
if (preg_match("=BEGIN[^>](.*)END=siU", $str[$count])) {
$str[$count] = "BEGIN".$str[$count];
preg_match_all("=BEGIN[^>](.*)END=siU", $str[$count], $a);
$search_str[$count] = "BEGIN".$a[1][0]."END";
$replace = "STATT BEGIN UND END STEHT JETZT DAS HIER";
$output .= str_replace($search_str,$replace,$str[$count]);
} else {
$output .= $str[$count];
}
$count++;
}
echo $output;
Ich hoffe es war verständlich...Ausgabe schrieb:Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. STATT BEGIN UND END STEHT JETZT DAS HIER laboris nisi ut aliquip ex ea commodo consequat. STATT BEGIN UND END STEHT JETZT DAS HIER cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Zuletzt bearbeitet:
@AMD-Hammer
wenn Du nur den Text austauschen mußt - wie wärs denn damit ?
Weiß ja nicht, ob die Anzahl auch wichtig ist
Zugegeben - wenn selten aufgerufen mit wenigen Treffern wirst Du den Unterschied nicht spüren (ansonsten ein kleiner Beitrag die CPU ein klein wenig zu entlasten)
Gruß,
Tom
wenn Du nur den Text austauschen mußt - wie wärs denn damit ?
PHP:
$output = preg_replace( "=BEGIN[^>].*END=siU", "STATT BEGIN UND END STEHT JETZT DAS HIER", $str);
Weiß ja nicht, ob die Anzahl auch wichtig ist
PHP:
preg_match_all("=BEGIN[^>].*END=siU", $str, $a);
$count = count($a[0]);
Zugegeben - wenn selten aufgerufen mit wenigen Treffern wirst Du den Unterschied nicht spüren (ansonsten ein kleiner Beitrag die CPU ein klein wenig zu entlasten)
Gruß,
Tom
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Gute Idee, aber in meinem Fall nicht anwendbar, da für meinen Einsatz, den String nicht ersetze sondern davor und dahinter teile des Strings wieder einfuege! Ist sehr komplex
Aber wenn man ihn nur ersetzen will ist, preg_replace vermutlich sinnvoller.
Aber wenn man ihn nur ersetzen will ist, preg_replace vermutlich sinnvoller.
@AMD-Hammer
na gut - kann ich gerade noch so mit leben
Aber die Aktion rettet die Regenwälder - schont die Server-CPUs ist noch nicht ganz abgeblasen:
Die While-Schleife ist immer noch recht teuer - in jedem Loop 2 mal den regulären Ausdruck compilieren lassen (macht PHP intern - wenn kein Optimizer das cached) ...
Da kannst Du Dich nach Herzenslust mit Deinen komplexen Geschichten austoben.
Gruß,
Tom
na gut - kann ich gerade noch so mit leben
Aber die Aktion rettet die Regenwälder - schont die Server-CPUs ist noch nicht ganz abgeblasen:
Die While-Schleife ist immer noch recht teuer - in jedem Loop 2 mal den regulären Ausdruck compilieren lassen (macht PHP intern - wenn kein Optimizer das cached) ...
PHP:
preg_match_all(......,$treffer);
$count=count($treffer[0]);
for($i=0;$i<$count;$i++) {
mach was mit $treffer[0][$i]...
}
Da kannst Du Dich nach Herzenslust mit Deinen komplexen Geschichten austoben.
Gruß,
Tom
Zuletzt bearbeitet:
AMD-Hammer
Grand Admiral Special
- Mitglied seit
- 05.10.2003
- Beiträge
- 2.760
- Renomée
- 123
- Standort
- Bornheim (Rheinland)
- Mein Laptop
- Lenovo IBM Thinkpad X301
- Prozessor
- AMD Athlon 64 X2 "Manchester" 3800+
- Mainboard
- EPoX 9NPA+ SLi
- Kühlung
- Zalman CNPS 7700-Cu
- Speicher
- 4x 1GB G.Skill CL3 F1-3200PHU2-2GBNT
- Grafikprozessor
- XFX GeForce 7600 GT
- Display
- 2x 17 Zoll TFT LG Flatron L1710S
- HDD
- Hitachi 1TB HDT721010SLA360, Samsung 160GB 1614N, Samsung 200GB 2014N, IBM Hitachi GXP180 120 GB
- Optisches Laufwerk
- LG GSA 4163A
- Gehäuse
- Coolermaster CAV-T03
- Netzteil
- Seasonic S12 600 Watt
- Betriebssystem
- Debian GNU/Linux 5.0.1 AMD64
- Webbrowser
- Firefox
Ich saufe eigentlich nur für Regenwälder, aber das is natürlich auch mal ne Initiative
Sieht gut aus der Quellcode... muss ich gleich mal mit rumspielen *g*
Sieht gut aus der Quellcode... muss ich gleich mal mit rumspielen *g*
Ähnliche Themen
- Antworten
- 78
- Aufrufe
- 14K
- Antworten
- 0
- Aufrufe
- 15K