我正在使用代码在wordpress中的短代码中浏览一些属性。我在一个字符串中获得了所有属性。像这样:
$var = 'type="text" title="super title" class="master-module"';
我想将其转换为:
$var = 'data-type="text" data-title="super title" data-class="master-module"';
我试图理解使用preg替换,但我在regex上很糟糕。
感谢任何帮助。
答案 0 :(得分:3)
你可以使用这样的正则表达式:
(\w+=")
<强> Working demo 强>
这个替换字符串:
data-$1
在应用替换字符串后,您可以在绿色和替换部分中看到匹配和捕获组的结果字符串。
php代码:
$re = "/(\\w+=\")/";
$str = "\$var = 'type=\"text\" title=\"super title\" class=\"master-module\"';\n\n";
$subst = "data-\1";
$result = preg_replace($re, $subst, $str);
更新:如果您的某个属性包含heading-type="xxx xx"
这样的短划线,那么您可以使用此正则表达式:
([\w-]+=")
答案 1 :(得分:0)
你可以爆炸,在每个需要加前缀的元素上应用想要的加法,然后内嵌你的字符串以获得预期的结果:
$var = 'type="text" title="super title" class="master-module"';
$var = explode (' ', $var);
array_walk ($var, function (&$a) {
if (strpos($a, '"') !== strlen($a) - 1)
$a = 'data-' . $a;
});
$var = implode (' ', $var);
// data-type="text" data-title="super title" data-class="master-module"
这样,您还可以在array_walk调用中添加一个数组,以包含要修改或排除的值列表。
答案 2 :(得分:0)
这是我的最终代码和答案。
$re = '/([\w-]+=")/';
$str = $moduleAttribute;
$subst = 'data-$1';
$result = preg_replace($re, $subst, $str);
我只有一个字。谢谢! 特别感谢@fede