我如何在PHP中爆炸这种字符串?

时间:2015-07-26 02:17:46

标签: php

我有一个下拉列表来显示搜索的价格范围。

用于下拉列表的HTML:

<select name="price">
        <option value="">All (-)</option>
        <option value="">Rs.400 to Rs.1,000 (3)</option>
        <option value="">Rs.1,000 to Rs.2,000 (6)</option>
        <option value="">Rs.2,000 to Rs.4,000 (1)</option>
        <option value="">Rs.4,000+ (1)</option>
</select>

使用此option值,现在我需要将第一个和第二个价格与用户选择分开。 例如。如果有人选择Rs.400 to Rs.1,000 (3),那么我需要4001,000

任何人都可以告诉我如何在php中执行此操作。我用php explode累了。但我无法正确理解这一点。

希望有人可以帮助我。 谢谢。

2 个答案:

答案 0 :(得分:4)

这样的事情:

HTML

<select name="price">
    <option value="all">All (-)</option>
    <option value="400|1000">Rs.400 to Rs.1,000 (3)</option>
    <option value="1000|2000">Rs.1,000 to Rs.2,000 (6)</option>
    <option value="2000|4000">Rs.2,000 to Rs.4,000 (1)</option>
    <option value="Over">Rs.4,000+ (1)</option>
</select>

PHP

<?php
  //Get the data from the form
  $price = $_POST['price'];
  $prices = explode("|", $price);
?>

例如,如果用户选择&#34; Rs.400到Rs.1,000&#34;,$ price的值将是:

$price[0] = "400";
$price[1] = "1000";

我希望有所帮助。如果它没有,我想我不清楚你在问什么。

答案 1 :(得分:1)

受到之前答案的启发。我建议。

HTML

<select name="price">
    <option value="|">All (-)</option>
    <option value="400|1000">Rs.400 to Rs.1,000 (3)</option>
    <option value="1000|2000">Rs.1,000 to Rs.2,000 (6)</option>
    <option value="2000|4000">Rs.2,000 to Rs.4,000 (1)</option>
    <option value="4000|">Rs.4,000+ (1)</option>
</select> 

PHP

<?php

function get_numeric($val) { 
  if (is_numeric($val)) { 
    return $val + 0; 
  } 
  return false; 
} 

$price_selected = isset($_REQUEST['price']) && trim($_REQUEST['price'])!="" ? $_REQUEST['price'] : "|"; // sets a default value

list($lower, $upper) = array_map('get_numeric',explode('|', $price_selected, 2));

var_dump($lower); // false when there's no lower limit

var_dump($upper); // false when there's no upper limit

?>