|
You last visited: Today at 05:10
Advertisement
[PHP]stringBetween Funktion
Discussion on [PHP]stringBetween Funktion within the Coding Snippets forum part of the Coding Releases category.
02/09/2014, 17:41
|
#1
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
[PHP]stringBetween Funktion
Ich brauchte eine Funktion, die in einem String zwischen 2 angegeben Zeichenfolgen, den Text rausbekommt.
Da ich RegEx nicht so mag, habe ich kurz eine Funktion dafür geschrieben:
PHP Code:
function stringBetween($content, $strStart, $strEnd) { $lenStart = strlen($strStart); $strResult = ""; $iPos = strpos($content, $strStart, 0); $iEnd = strpos($content, $strEnd, $iPos + $lenStart); if($iPos != false && $iEnd != false) { $strResult = substr($content, $iPos + $lenStart, $iEnd - ($iPos + $lenStart)); } return $strResult; }
Nutzung:
PHP Code:
$text = "Bäume sind groß"; $mitte = stringBetween($text, "Bäume", "groß"); //$mitte bekommt als Wert "sind"
Ich hoffe, irgendwem hilft es und ich freue mich auf Verbesserungsvorschläge.
Requi
|
|
|
02/09/2014, 18:12
|
#2
|
elite*gold: 25
Join Date: Sep 2011
Posts: 5,536
Received Thanks: 1,266
|
How about Regex?
Viel einfacher.
|
|
|
02/09/2014, 18:28
|
#3
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Quote:
Originally Posted by Padrio
How about Regex?
Viel einfacher.
|
Quote:
Originally Posted by Requi
Ich brauchte eine Funktion, die in einem String zwischen 2 angegeben Zeichenfolgen, den Text rausbekommt.
Da ich RegEx nicht so mag, habe ich kurz eine Funktion dafür geschrieben:
|
Er mag kein Regex. Regex ist auch relativ hässlich.(Meine Meinung)
|
|
|
02/10/2014, 14:03
|
#4
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Quote:
Originally Posted by omitma
Er mag kein Regex. Regex ist auch relativ hässlich.(Meine Meinung)
|
Schließlich ist eine Funktion mit acht Zeilen auch viel schöner als ein Einzeiler der kaum Potential für Fehler bietet (langweiliger).
Und wenn wir schon beim Thema Fehler sind: Gibt "strpos" bei nichtvorkommen nicht "false" statt "-1" zurück?
|
|
|
02/17/2014, 15:01
|
#5
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Benutz doch den reg exp pattern aus den autoit includes (3.12)
In autoit würde deine func bei einer stringlen von 6350 und einem string der 2100 mal vorkommt ~650 ms brauchen der reg exp pattern ~2 ms.
Deine func wäre für mich sinnvoller wenn alle gefundenen strings returned werden:
stringbetween("123123","1","3") Returned 2 besser wäre alle 2en in einem array
|
|
|
02/17/2014, 19:40
|
#6
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by »FlutterShy™
In autoit würde deine func bei einer stringlen von 6350 und einem string der 2100 mal vorkommt ~650 ms brauchen der reg exp pattern ~2 ms.
|
Du hast mich überzeugt, diesen Geschwindigkeitsschub kann sich ja keiner entgehen lassen weil man ja einen 6350 char String auch 2100 mal in einem Script abfragen muss.
|
|
|
02/17/2014, 19:48
|
#7
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by Mostey
Du hast mich überzeugt, diesen Geschwindigkeitsschub kann sich ja keiner entgehen lassen weil man ja einen 6350 char String auch 2100 mal in einem Script aufruft. 
|
Naja also bei mir kommts schonmal vor das ich eine 10 mb große datei einlese und StringBetween benutze. Außerdem ist schneller immer besser (solang es aufs gleiche ergebnis kommt)
|
|
|
02/17/2014, 19:53
|
#8
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by »FlutterShy™
Naja also bei mir kommts schonmal vor das ich eine 10 mb große datei einlese und StringBetween benutze. Außerdem ist schneller immer besser (solang es aufs gleiche ergebnis kommt)
|
Verständlichkeit und Lesbarkeit stehen an erster Stelle. Außer natürlich bei der Netzwerkprogrammierung. Da zählt jedes Byte und jede ms.
Dein Beispiel ist nun mal sehr unrealistisch und ich wage einfach mal zu behaupten das die Wahrscheinlichkeit so dermaßen gering ist, einen 6350 char String in einem Script 2100 durchgehen zu müssen. Und selbst wenn, dann dauert es halt mal 500 ms anstatt 2 ms. So lange das ein mal vorkommt ist das kein Thema.
|
|
|
02/17/2014, 20:40
|
#9
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
In dem fall hier ist RegExp aber besser da kannst du auch nichts gegen sagen
|
|
|
02/17/2014, 20:50
|
#10
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by »FlutterShy™
In dem fall hier ist RegExp aber besser da kannst du auch nichts gegen sagen
|
Das ist kein Argument.
|
|
|
02/18/2014, 01:34
|
#11
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Mostey
Verständlichkeit und Lesbarkeit stehen an erster Stelle. Außer natürlich bei der Netzwerkprogrammierung. Da zählt jedes Byte und jede ms.
Dein Beispiel ist nun mal sehr unrealistisch und ich wage einfach mal zu behaupten das die Wahrscheinlichkeit so dermaßen gering ist, einen 6350 char String in einem Script 2100 durchgehen zu müssen. Und selbst wenn, dann dauert es halt mal 500 ms anstatt 2 ms. So lange das ein mal vorkommt ist das kein Thema.
|
Bitte mach Programmieren niemals zu deinem Beruf oô So eine Denkweise ist schuld an zum Verrecken langsamer Software.
Regex sind wesentlich aussagekräftiger, wenn man sie lesen kann, zudem weniger fehleranfällig und flexibler.
Desweiteren ist das Beispiel gar nicht mal so extrem. Wir reden nochmal, wenn es um ein paar Millionen Zeichen geht..
Quote:
|
//$mitte bekommt als Wert "sind"
|
Falsch, da kommt " sind " raus.
@FlutterShy
Nur dass es hier nicht um AutoIt geht.
|
|
|
02/18/2014, 06:42
|
#12
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by MrSm!th
Falsch, da kommt " sind " raus.
|
Das dachte ich auch. Aber in php lässt er die Leerzeichen am Anfang und am Ende wohl weg.
|
|
|
02/18/2014, 07:54
|
#13
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by MrSm!th
So eine Denkweise ist schuld an zum Verrecken langsamer Software.
Regex sind wesentlich aussagekräftiger, wenn man sie lesen kann, zudem weniger fehleranfällig und flexibler.
Desweiteren ist das Beispiel gar nicht mal so extrem. Wir reden nochmal, wenn es um ein paar Millionen Zeichen geht..
|
Es geht hier aber sicher nicht um ein paar Millionen Zeichen. Das dürfte ja klar sein das es sich dann um viele Sekunden handelt die das Programm / die Anwendung ausbremsen und sich dann RegEx natürlich mehr rentiert wenn dieser Text sehr oft behandelt werden muss.
Aber wie wäre es, wenn man mal etwas realistischer denkt? Wann hat man schon so eine große Masse zu vergleichen? Hier ist nicht mal ein richtiger Kontext gegeben.
Ob ich jetzt ein mal 500 ms warten muss oder 2ms. So lange es ein mal vorkommt ist es kein Thema. Ich bleibe dabei und muss mir sicher nicht von dir sagen lassen, das ich aufgrund meiner Meinung nicht das tun soll, was ich möchte.
|
|
|
02/18/2014, 12:21
|
#14
|
elite*gold: 25
Join Date: Sep 2011
Posts: 5,536
Received Thanks: 1,266
|
Quote:
Originally Posted by Mostey
Ob ich jetzt ein mal 500 ms warten muss oder 2ms. So lange es ein mal vorkommt ist es kein Thema. Ich bleibe dabei und muss mir sicher nicht von dir sagen lassen, das ich aufgrund meiner Meinung nicht das tun soll, was ich möchte.
|
So eine Denkweise ist in meinen Auge einfach falsch.
Wer einmal so etwas durch gehen lässt, der lässt sowas auch an anderen stellen zu.
Dann heißt es: "Ah hier darf die Seite gerne mal 500ms laden, und ah hier auch noch ein mal, und hier stört das ja auch keinen." Und im Endeffekt sind überall stolper fallen das die Seite mal schnell mal langsam ladet.
Und es ist für den Endanwender ein Rießen unterschied ob er mal 2ms oder 500ms warten muss.
|
|
|
02/18/2014, 12:42
|
#15
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by Padrio
So eine Denkweise ist in meinen Auge einfach falsch.
Wer einmal so etwas durch gehen lässt, der lässt sowas auch an anderen stellen zu.
Dann heißt es: "Ah hier darf die Seite gerne mal 500ms laden, und ah hier auch noch ein mal, und hier stört das ja auch keinen." Und im Endeffekt sind überall stolper fallen das die Seite mal schnell mal langsam ladet.
Und es ist für den Endanwender ein Rießen unterschied ob er mal 2ms oder 500ms warten muss.
|
Wer spricht von Ladevorgängen bzw. essentiellen Funktionen die unbedingt nötig sind um eine Seite zu laden?
|
|
|
 |
|
Similar Threads
|
Winhttp Stringbetween
10/23/2013 - AutoIt - 3 Replies
Hey, ich möchte vom quelltext die value rausnehmen.
Jedoch gibt es mehrere values diese auch unterschiedlich sind.
Darum brauche ich den teil vor value = auch aber in diesen teil sind " drinnen.
Und wenn ich das einfüge in Autoit schließt sich das ja wieder weil da dann zwei " sind
|
[S] USA.net E-mail Spammer (Proxy Funktion & Account-listen Abruf Funktion) [B] e*g
04/24/2013 - elite*gold Trading - 0 Replies
Hallo,
Ich Suche einen E-mail Spammbot der mit USA.net E-mail Adressen Arbeitet. den SMTP Herrauszufinden ist ja nicht Wirklich schwer. Er Sollte Proxy Funktionen haben (E-mail via Proxy versenden) Und er sollte eine liste mit Accounts (Format E-mail:Passwort) Einlesen und verwenden Können (Wenn eine E-mail nichtsmehr sendet wird eine 2te Genommen Also aus der Liste)
Hoffe ihr könnt mir da Weiterhelfen ^^ Kontakt Bitte per PN.
|
Hilfe bei Send Funktion mit Stop Funktion
04/02/2011 - AutoIt - 11 Replies
Hallo Elitepvpers
ich habe ein Problem und Mein Problem ist das mein Text einfach weiter schreibt wenn ich mit HotKey verwende... gib es keine Funktion das der Text einmal kommt und nicht wenn man einmal die HotKey das er 10 min das selbe schreibt :confused:
|
StringBetween --- Problem-Need Help ^^
11/14/2010 - AutoIt - 20 Replies
Wie der Titel schon sagt geht es um _StringBetween(denke ich)
Hier der Code:
Func _firefoxrid()
_FFStart(GUICtrlRead($input3))
WinSetState ( "MozillaFirefox", "", @SW_MINIMIZE )
$sHTML = _FFReadHTML("html",16)
$rid = _StringBetween($sHTML, "var rid = '", "';")
_FFWindowSelect( "", "label")
Local $time1= _StringBetween($sHTML, 'new product('&GUICtrlRead($Input2), 'nbsp')
;$time2= StringRight($time1, 8)
|
Auch ein StringBetween Problem..
11/08/2010 - AutoIt - 16 Replies
also habe untenstehenden code... und es kommt immer der fehler:
Subscript used with non array varriable.
woran könnte es liegen^^ die youtube seite ist eig geöffnet und bei nem andren code hat genau das gefunzt..
alle includes sind eig gemacht...
weis es net^^
sagt wenn ihr mehr infos braucht^^
|
All times are GMT +1. The time now is 05:12.
|
|