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