function test()
{
$content = "lang=en]text en|lang=sp]text sp";
$atts = explode('|', $content);
}
我要做的是让自己回应$ param [en]得到“text en”,$ param [sp]得到“text sp”。这可能吗?
答案 0 :(得分:1)
如果这不是$ content
中的硬编码字符串function test()
{
$content = "lang=en]text en|lang=sp]text sp";
$atts = explode('|', $content);
foreach($atts as $att){
$tempLang = explode("]", $att);
$params[array_pop(explode("=", $tempLang[0]))] = $tempLang[1];
}
var_dump($params);
}
答案 1 :(得分:1)
$param = array();
$langs = explode('|', $content);
foreach ($langs as $lang) {
$arr = explode(']', $lang);
$key = substr($arr[0], 5);
$param[$key] = $arr[1];
}
如果你确定$ content的格式正确,那就是这样。否则你需要进行额外的检查以确保$ langs和$ arr是他们应该的。使用以下命令快速检查数组中的内容:
echo '<pre>'.print_r($array_to_be_inspected, true).'</pre>';
希望这有帮助
答案 2 :(得分:0)
我认为在这种情况下你可以使用正则表达式。
$atts = explode('|', $content);
foreach ($atts as $subtext) {
if (preg_match('/lang=(\w+)\](\w+) /', $subtext, $regs)) {
$param[$regs[0]] = $regs[1];
}
}
虽然如果该值来自数据库,您似乎有一个错误的数据库结构 - 如果您可以编辑它,请尝试使数据库遵守以生成database normal。