@@Der Martin:
nuqneH
Hallo Ingrid,
Ja? ;-)
$start = strpos($text, $startseq);
$end = strpos($text, $endseq);
Äh, nö. Zweimal mit String^WByteoperation über einen String gehen ist vielleicht auch nicht performanter als dies einmal mit einem regulären Ausdruck zu tun.
Und muss auch nicht sein: Nach `$endseq`{:.language-php} muss man ja nur hinter dem Vorkommen von `$startseq`{:.language-php} suchen (und das auch nur, wenn es wirklich vorkommt). `[link:http://www.php.net/manual/de/function.strpos.php@title=strpos()]`{:.language-php} kennt dazu einen optionalen dritten Parameter.
~~~php
$start = strpos($text, $startseq);
if ($start !== false)
{
$start += strlen($startseq);
$end = strpos($text, $endseq, $start);
}
else
{
$end = false;
}
Damit kann man sich
if ($start===false // start sequence not found
|| $end===false // end sequence not found
|| $end<$start) // end sequence found before start sequence
auch sparen:
~~~php
if ($end === false)
{
echo 'Section not found';
}
else
{
echo htmlspecialchars(trim(substr($text, $start, $end-$start)));
}
Qapla'
--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)