如何preg_match下面一段“shortcode”,以便视频和对齐是数组键,并且它们的值是引号中的内容? [视频=“123456” align =“left” /]preg_match创建一个包含语义数组键的数组的简短代码
1
A
回答
1
$string='[video="123456" align="left"/]';
$string= preg_replace("/\/|\[|\]/","",$string);
$s = explode(" ",$string);
foreach ($s as $item){
list($tag, $value) = explode("=",$item);
$array[$tag]=$value;
}
print_r($array);
-1
我不认为有任何(简单)的方式使用单一的正则表达式来做到这一点,但是这将在一个相当普遍的工作方式,挑选出标签和解析它们:
$s = 'abc[video="123456" align="left"/]abc[audio="123456" volume="50%"/]abc';
preg_match_all('~\[([^\[\]]+)/\]~is', $s, $bracketed);
$bracketed = $bracketed[1];
$tags = array();
foreach ($bracketed as $values) {
preg_match_all('~(\w+)\s*=\s*"([^"]+)"~is', $values, $pairs);
$dict = array();
for ($i = 0; $i < count($pairs[0]); $i++) {
$dict[$pairs[1][$i]] = $pairs[2][$i];
}
array_push($tags, $dict);
}
//-----------------
echo '<pre>';
print_r($tags);
echo '</pre>';
输出:
Array
(
[0] => Array
(
[video] => 123456
[align] => left
)
[1] => Array
(
[audio] => 123456
[volume] => 50%
)
)
1
这里使用另一种方法:输出的$arr
$str = '[video="123456" align="left"/][video="123457" align="right"/]';
preg_match_all('~\[video="(\d+?)" align="(.+?)"/\]~', $str, $matches);
$arr = array_combine($matches[1], $matches[2]);
print_r()
:
Array
(
[123456] => left
[123457] => right
)
0
与命名参数替代的解决方案:
$str = '[video="123456" align="left"/][video="123457" align="right"/]';
$matches = array();
preg_match_all('/\[video="(?P<video>\d+?)"\salign="(?P<align>\w+?)"\/\]/', $str, $matches);
for ($i = 0; $i < count($matches[0]); ++ $i)
print "Video: ".$matches['video'][$i]." Align: ".$matches['align'][$i]."\n";
您也重新使用以前的array_combine小号Alix提供的解决方案:
print_r(array_combine($matches['video'], $matches['align']));
相关问题
- 1. 从字典数组中,使数组包含一个键的值
- 2. 创建一个简单的数组
- 3. 我该如何创建一个包含带密码的外键的组合键?
- 4. php数组键包含一个词
- 5. 创建一个包含字符和增加数字的数组
- 6. 基于另一个数组的值创建包含等级的数组?
- 7. 创建包含结构值的数组
- 8. 如何创建一个包含N个零的数组?
- 9. 创建一个包含多个数组的表格PHP
- 10. 如何从JavaScript数组中创建一个简单的数组?
- 11. 创建一个只包含给定类的对象的数组
- 12. 使用原型来创建一个包含方法的数组
- 13. 在包含对象值的对象中创建一个数组
- 14. 创建一个包含对象数组的类
- 15. 如何在PHP中创建一个包含给定数组键的字符串?
- 16. 如何创建一个包含我的自定义类的静态数组?
- 17. Php代码创建多个数组json
- 18. 创建一个数组,其中的键和值已定义
- 19. 创建模型时包含数组
- 20. 构建包含多个数组的新数组
- 21. 创建一个数组,其值位于数组中的一个键中
- 22. 使用关联数组键和数值数组值创建一个数组PHP
- 23. 创建一个数组对象数组?
- 24. 获取一个包含过去两周内创建的帖子数的数组
- 25. 创建一个填充了HTML代码的数组
- 26. Swift无法创建包含嵌套类型的元组数组
- 27. 简单的Java函数来创建一个数组
- 28. 如何简化创建一个未填充的整数数组
- 29. 在一个目录中创建一个包含文件名的数组
- 30. 如何创建包含唯一字符串的数组?
我是PHP的新手,我试图让自己变得更好,这只是让我的夜晚。非常感谢ghostdog74! – 2010-02-02 04:13:41
如果这解决了您的问题,您应该通过单击问题旁边的复选标记来给予答案,以便对答案感兴趣的其他人可以找到对您有用的内容。 – 2010-02-03 21:54:29