无法回显数组

时间:2012-01-22 14:36:39

标签: php arrays echo

我有问题回应一个数组。

$test = 'one two three four';
$arr = explode(' ', $test);

echo '<br />+'.$arr[0].' +(>'.$arr[1].' <'.$arr[2].'';

它停止在$ arr [1]回显,我需要这个在mysql中进行特殊查询。

我需要做的是:

('+one +(>two <three)

另外,我想知道如何使用“&lt;”字符从$ arr [2]到〜。简而言之,我要实现的目标是:

('+one +(>two <three <four ... <infinite)

4 个答案:

答案 0 :(得分:7)

它不会停止回显,浏览器只会错误标记开头的<字符并采取相应的行动。

如果您要显示此输出,则应首先在其上调用htmlspecialchars。否则(例如查询)不需要特殊处理。

关于你的上一个问题:你会做类似

的事情
$test = 'one two three four five'; 
$arr = explode(' ', $test); 

$out = '+'.$arr[0].' +(>'.$arr[1].' <'.implode(' <', array_slice($arr, 2)).')';
echo htmlspecialchars($out); // only for echoing!

答案 1 :(得分:2)

代码的原始输出:

<br />+one +(>two <three

浏览器认为<three是标记。使用html特殊字符。

答案 2 :(得分:0)

<>替换为&lt;&gt;

答案 3 :(得分:0)

$test = 'one two three four five six ...';
$arr = explode(' ', $test);
$total = count($arr);

if ($total < 3) {
    echo 'Less than three elements found.';
    exit;
}

$tmp = '(+' . $arr[0] . ' +(>' $arr[1];

for ($i = 2; $i < $total; ++$i) {
    $tmp .= ' <' . $arr[$i];
}

$tmp .= ')';

echo $tmp;

这是一种方法。还有很多其他方法。