2011-01-12 7 views
6

Mam część aplikacji PHP, która ocenia długi ciąg znaków wprowadzanych przez użytkownika i wyodrębnia liczbę, która zawsze zaczyna się od 20 znaków w ciągu znaków dostarczanym przez użytkownika.Jak wyodrębnić podciąg z łańcucha znaków w PHP, aż osiągnie określoną postać?

Jedynym problemem jest to, że nie wiem, jak długo liczba dla każdego użytkownika będzie, wszystko co wiem jest koniec numeru zawsze następuje podwójny cudzysłów (").

Jak mogę korzystać z funkcji PHP podłańcuchów wyodrębnić tworzą wyjścia podciąg określony punkt, a kończąc, gdy uderza w podwójny cudzysłów?

góry dziękuję.

Odpowiedz

11

można użyć strpos dostać pierwszą pozycję " z pozycja 20 na:

$pos = strpos($str, '"', 20); 

Stanowisko to może być następnie wykorzystane, aby uzyskać podciąg:

if ($pos !== false) { 
    // " found after position 20 
    $substr = substr($str, 20, $pos-20-1); 
} 

Obliczenia dla trzeciego parametru jest konieczne, ponieważ substr oczekuje długość podciągu, a nie pozycji końcowej. Należy również pamiętać, że substr zwraca false, jeżeli igła nie może zostać znaleziona w stogu siana.

+0

piękne +1 .. –

0
<? 

$str = substring($input, 20, strpos($input, '"') - 20); 
echo $str; 

?> 

Albo coś w tym stylu itp

1
$nLast = strpos($userString , '"'); 
substr($userString, 0, $nLast); 
0

znaleźć pierwsze wystąpienie podwójny cudzysłów po 20 znaków, odjąć 19 - który daje długość żądanego fragmentu:

$dq = strpos($string,'"',19); //19 is index of 20th char 
$desired_string = substr($string,19,$dq-19); 
0

Idąc do po prostu dodaj odpowiedź Gumbo na wypadek, gdybyś potrzebował pomocy z funkcją substring:

$pos = strpos($str, '"', 20); 
$substring = substr($str, 20, $pos);