将php变量作为分隔符传递给php explode()

时间:2014-02-10 03:26:33

标签: php html explode delimiter

我正在尝试将一个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相同。 任何建议将不胜感激。谢谢

3 个答案:

答案 0 :(得分:0)

为什么不使用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);    

答案 1 :(得分:0)

您的问题必须与$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);
}

答案 2 :(得分:0)

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

$delimiter =  $_POST['delimiter'];

eval("\$delimiter = \"$delimiter\";");

在php中$delimiter成为string(2)之后,eval最初是由string(1) tab创建的。