Как извлечь подстроку из строки в PHP, пока она не достигнет определенного символа?

У меня есть часть приложения PHP, которое оценивает длинную строку, введенную пользователем, и извлекает число, которое всегда начинается с 20 символов в строке, которую предоставляет пользователь.

Единственная проблема заключается в том, что я не знаю, какой длины будет номер для каждого пользователя, все, что я знаю, это то, что в конце номера всегда следует двойная кавычка (").

Как я могу использовать функцию подстроки PHP для извлечения подстроки, начинающейся с определенной точки и заканчивающейся, когда она попадает в двойную кавычку?

Заранее спасибо.


person Jack Roscoe    schedule 12.01.2011    source источник


Ответы (4)


Вы можете использовать strpos, чтобы получить первую позицию " из позиции 20:

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

Затем эту позицию можно использовать для получения подстроки:

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

Вычисление третьего параметра необходимо, так как substr предполагает длину подстроки, а не конечную позицию. Также обратите внимание, что substr возвращает false, если игла не может быть найдена в стоге сена.

person Gumbo    schedule 12.01.2011

<?

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

?>

Или что-то в этом роде и т.

person Jason Benson    schedule 12.01.2011

найти первое вхождение двойной кавычки после 20 символов, вычесть 19 - это дает вам длину желаемой подстроки:

$dq = strpos($string,'"',19); //19 is index of 20th char
$desired_string = substr($string,19,$dq-19);
person dev-null-dweller    schedule 12.01.2011

Собираюсь просто добавить ответ Гамбо на случай, если вам понадобится помощь с функцией подстроки:

$pos = strpos($str, '"', 20);
$substring = substr($str, 20, $pos);
person Nick Rolando    schedule 12.01.2011