Wenn Sie wirklich in Effizienz suchen, müssen Sie einen Zeiger - ich meine Index - mit Ihrer Zeichenfolge. Viele String-Funktionen akzeptieren einen Offset, um von (wie strpos()
dritten Parameter) zu starten. Normalerweise würde ich empfehlen, ein Objekt zu schreiben, um diese Funktionalität zu umschließen, aber wenn Sie davon ausgehen, dass Sie viel davon verwenden, könnte dies zu einem Performance-Engpass führen. Hier ist ein Beispiel dafür, was ich meine (ohne OO):
while ($whatever) {
$pos = strpos($string, $myToken, $startIndex);
# do something using $pos
$startIndex = $pos;
}
Wenn Sie möchten, können Sie Ihre eigene Wrapper-Klasse schreiben, die diese String-Operationen tun und sehen, ob es eine Geschwindigkeit auswirkt:
class _String {
private $string;
private $startIndex;
private $length;
public function __construct($string) {
$this->string = $string;
$this->startIndex = 0;
$this->length = strlen($string);
}
public function substr($from, $length = NULL) {
$this->startIndex = $from;
if ($length !== NULL) {
$this->endIndex = $from + $length;
}
}
# other functions you might use
# ...
}
Ich würde denken, dass die Zuordnung der Mörder wäre, nicht die substr. – CaffGeek