将字符串拆分为数组[PHP]

时间:2016-12-16 08:05:34

标签: php mysql

我正在尝试拆分字符串,字符串是(在MySQL中):

"Accident (&amp); Travel;Car (&amp); Motorcycle."

你知道,实际上我只想在数组中使用两个元素,[0]将是:"Accident & Travel, [1] would be the Car & Motorcycle"。

我为此使用了分隔符(explode)并使用(&#34 ;;")强加了分隔符。
现在,问题是,MySQL中的符号"&"是翻译成(&amp);(没有括号),意思是现在我的字符串被拆分,就像它们有4个元素而不是2:

"[0] = Accident &, [1] = Travel, [2] = Car &, [3] = Motorcycle."

我该如何解决这个问题?之前我听说过preg_split,但我不确定如何使用它。

我使用的php爆炸:
    "$string = "Accident (&amp); Travel; Car (&amp); Motorcycle"; $points = explode(";", $string); ?> <ul> <?php for ($x = 0; $x < count($points); $x++) { echo "<li>$points[$x]</li>";
}"

2 个答案:

答案 0 :(得分:1)

它不是很清楚,但如果我正确地阅读了这个问题,那么这些值将存储在数据库中而不带括号。所以:

Accident &amp; Travel;Car &amp; Motorcycle.

然后看起来字符串在存储之前使用类似htmlspecialchars的字符进行编码。

要解码它们,您可以在爆炸前使用htmlspecialchars_decode()

然而,这真的不是必要的:

  • 在将数据存储到数据库之前,不应对数据进行编码以便在html中使用;你永远不知道你可能需要它,所以你应该按原样存储(验证后......)。输出时,编码为输出介质所需。
  • 您不应在一个数据库字段中存储多个值;你应该规范化你的数据库,这将使数据检索变得更加容易。

答案 1 :(得分:0)

// original string
$string = "Accident &amp; Travel;Car &amp; Motorcycle.";

// replace the troublesome '&amp;' string
$string = str_replace('&amp;', '&', $string);

// split the string at the remaining ';'
$points = explode(";", $string);