【问题标题】:Passing a php variable as a delimiter to php explode()将 php 变量作为分隔符传递给 php explode()
【发布时间】:2014-03-07 06:39:35
【问题描述】:

我正在尝试将 php 变量作为分隔符传递给explode()。正在从 html 表单中获取变量的值。

表格:

<select name="delimiter">
<option value="\t">Tab Space</option>
<option value=",">Comma (,)</option>
<option value=";">Semi colon (;)</option>
<option value="&">Ampersand (&)</option>
<option value="|">Pipe (|)</option>
</select>

php:

$delimiter=$_POST['delimiter'];
$arr=explode($delimiter, $line);

以上似乎不起作用。它不识别分隔符,因此在 $arr 中给了我一个元素,即与 $line 相同。 任何建议将不胜感激。谢谢

【问题讨论】:

  • 您是否尝试过在 $delimiter 爆炸前回显它?
  • 如果你var_dump$delimiter,你得到的期望值是字符串吗?
  • 是的,我有。如果我从表单中选择选项卡,它会给我“\t”,但它在分解功能中不起作用。如果我手动初始化 $delimiter="\t",然后将其传递给爆炸,它就可以正常工作。
  • 是的,先生,我愿意。只是一个具有预期值的字符串。
  • \t 在 html 中没有任何意义。您的 $_POST 值实际上是一个反斜杠和一个“t”,NOT 是一个制表符。但是,在 PHP 中,$var = "\t" 被解释为制表符,因为这就是 \t 在双引号字符串中的含义。

标签: php html explode delimiter


【解决方案1】:

你为什么不为此使用 preg_split.. 例如

<select name="delimiter">
<option value="\t">Tab Space</option>
<option value=",">Comma (,)</option>
<option value=";">Semi colon (;)</option>
<option value="&">Ampersand (&)</option>
<option value="\|">Pipe (|)</option>
</select>

和php脚本

$delimiter =  $_POST['delimiter'];

$arr =  preg_split("/".$delimiter."/", $line);    

【讨论】:

    【解决方案2】:

    您的问题必须是您的$line 的设置方式。
    这对我有用:

    $string = "hello\tworld\tthis\tis\tfun";
    
    $options = ["\t"=>'tab', ','=>'comma', ';'=>'semi-colon', '&'=>'amperstand','|'=>'pipe'];
    
    echo "<form method=\"post\">";
    echo "<select name=\"delimList\">\r\n";
    foreach($options as $val => $option){
        echo "<option value=\"$val\">$option</option>\r\n";
    }
    echo "</select>\r\n";
    echo "<input type=submit></form>";
    if(isset($_POST['delimList'])){
        $delim = $_POST['delimList'];
        $array = explode($delim, $string);
        print_r($array);
    }
    

    【讨论】:

      【解决方案3】:

      我最接近的解决方案是 php 中的以下行:

      $delimiter =  $_POST['delimiter'];
      
      eval("\$delimiter = \"$delimiter\";");
      

      最初,string(2) 在 php 中 eval 变为 string(1) tab 后创建 $delimiter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-05
        • 2014-04-23
        • 2011-06-20
        相关资源
        最近更新 更多