2012-06-19 1 views
1

PHP-скрипт для чтения в запросах действий пользователя и анализа их компонентов. Пример, пользователь в SET Colour = Blue или describe Chocolate Cake = The best cake ever! я использую как это:Будет ли strtok (null) вызывать ошибки?

$actionKeyword = strtok($actionRequest, " "); // keyword followed by space 
$name = strtok("="); // Then name followed by equals 
$description = strtok(null); // get the rest of the string 

Я не мог найти что-либо на получение остальной части строки. В примере PHP.net использовались пробелы для обозначения каждого слова, но не было ни одного персонажа, о котором я мог думать, что это не может быть частью описания. Это решение работает в моих тестах.

Есть ли побочный эффект или специальный случай? Или это совершенно безопасный и приемлемый способ получить остальную часть линии?

+0

Не должно быть никаких неприятных побочных эффектов. ;) –

ответ

1

Теперь он не должен вызывать ошибок, так как null преобразуется в пустую строку, когда strtok анализирует свои параметры.

Но вы, вероятно, будете более безопасны, если используете явно форму strtok(''). Причина, по которой он работает, заключается в том, что strtok ожидает строковый список символов разделителя в качестве параметра токена. Таким образом, пустая строка здесь в основном представляет собой пустой список разделителей. И никакие разделители, которые нужно искать, означает, что вся оставшаяся строка возвращается.)

Кстати, этот совет дается in comments на странице руководства.)

+0

Арг, не видел его внизу. Благодарю. – ShawnPConroy

1

Да, вы можете сделать это - или просто позвонить strtok("") без маркеров ...

$actionKeyword = strtok("describe Chocolate Cake = The best cake ever!", " "); // keyword followed by space 
$name = strtok("="); // Then name followed by equals 
$description = strtok(""); // get the rest of the string 

Working example here

Примечания: вам нужно будет обрезать ее, поскольку она содержит ведущее место