❮ Tham chiếu chuỗi PHP
Thí dụ
Phân tích chuỗi truy vấn thành các biến:
Hãy tự mình thử »
Định nghĩa và cách sử dụng
Hàm parse_str () phân tích một chuỗi truy vấn thành các biến.
Lưu ý: Nếu tham số mảng không được đặt, các biến được đặt bởi hàm này sẽ ghi đè lên các biến hiện có cùng tên. If the array parameter is not set, variables set by this function will overwrite existing variables of the same name.
Lưu ý: Cài đặt Magic_quotes_GPC trong tệp php.ini ảnh hưởng đến đầu ra của chức năng này. Nếu được bật, các biến được chuyển đổi bởi addslashes () trước khi phân tích cú pháp parse_str (). The magic_quotes_gpc setting in the php.ini file affects the output of this function. If enabled, the variables are converted by addslashes() before parsed by parse_str().
Cú pháp
Giá trị tham số
sợi dây | Yêu cầu. Chỉ định chuỗi để phân tích cú pháp |
mảng | Tùy chọn (cần thiết từ PHP 7.2). Chỉ định tên của một mảng để lưu trữ các biến. Tham số này chỉ ra rằng các biến sẽ được lưu trữ trong một mảng. |
Chi tiết kỹ thuật
Không có giá trị nào được trả lại |
4+ |
Php 7.2.0 - Tham số mảng là bắt buộc.php 4.0.3 - Đã thêm tham số mảng. PHP 4.0.3 - Added the array parameter. |
Nhiều ví dụ hơn
Thí dụ
Lưu trữ các biến trong một mảng:
Hãy tự mình thử »
❮ Tham chiếu chuỗi PHP
<?php use Parle\{Parser, ParserException, Lexer, Token};$p = new Parser;
$p->token("INTEGER");
$p->left("'+' '-' '*' '/'");$p->push("start", "exp");
$prod_add = $p->push("exp", "exp '+' exp");
$prod_sub = $p->push("exp", "exp '-' exp");
$prod_mul = $p->push("exp", "exp '*' exp");
$prod_div = $p->push("exp", "exp '/' exp");
$p->push("exp", "INTEGER"); /* Production index unused. */$p->build();$lex = new Lexer;
$lex->push("[+]", $p->tokenId("'+'"));
$lex->push("[-]", $p->tokenId("'-'"));
$lex->push("[*]", $p->tokenId("'*'"));
$lex->push("[/]", $p->tokenId("'/'"));
$lex->push("\\d+", $p->tokenId("INTEGER"));
$lex->push("\\s+", Token::SKIP);$lex->build();$exp = array(
"1 + 1",
"33 / 10",
"100 * 45",
"17 - 45",
);
foreach (
$exp as $in) {if (!$p->validate($in, $lex)) {
throw new ParserException("Failed to validate input");
}$p->consume($in, $lex);
while (
Parser::ACTION_ERROR != $p->action && Parser::ACTION_ACCEPT != $p->action) {switch ($p->action) {
case Parser::ACTION_ERROR:
throw new ParserException("Parser error");
break;
case Parser::ACTION_SHIFT:
case Parser::ACTION_GOTO:
case Parser::ACTION_ACCEPT:
break;
case Parser::ACTION_REDUCE:
switch ($p->reduceId) {
case $prod_add:
$l = $p->sigil(0);
$r = $p->sigil(2);
echo "$l + $r = " . ($l + $r) . "\n";
break;
case $prod_sub:
$l = $p->sigil(0);
$r = $p->sigil(2);
echo "$l - $r = " . ($l - $r) . "\n";
break;
case $prod_mul:
$l = $p->sigil(0);
$r = $p->sigil(2);
echo "$l * $r = " . ($l * $r) . "\n";
break;
case $prod_div:
$l = $p->sigil(0);
$r = $p->sigil(2);
echo "$l / $r = " . ($l / $r) . "\n";
break;
}
break;
}
$p->advance();
}
}