我有问题回应一个数组。
$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)
答案 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)
将<
和>
替换为<
和>
。
答案 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;
这是一种方法。还有很多其他方法。