我正在研究一种使用正则表达式清理生成的类属性的方法。
有这个HTML
<div class=" class1 class2 ">
并使用此preg
$string = preg_replace('/class=["\'](?P<class>[^"\'<>]+)["\']/i', 'class="$1"', $string);
如何告诉php修剪$ 1附近的尾随空格? (1美元基本上是课内的内容)
是否有其他方法可以检测和替换终端空间?
谢谢
已编辑:我基本上是想要这样做
'class =“'。trim($ 1)。'”''
但$ 1不可用作变量。我已经尝试了$$ 1和$ {$ 1}。也许还有其他语法可以做到这一点。
答案 0 :(得分:2)
您可以使用略微修改的正则表达式来捕捉$1
中1}}
$string = preg_replace('/class=["\']\s*(?P<class>[^"\'<>]+?)\s*["\']/i', 'class="$1"',
'<div class=" class1 class2 ">') );
var_dump( $string );
string(27) "<div class="class1 class2">"
答案 1 :(得分:0)
如何告诉php修剪$ 1附近的尾随空格?
你可以做rtrim和ltrim来减少起始和尾随空格并保持中间一次,这很重要。
$string = '<div class=" class1 class2 ">';
$string = preg_replace('/class=["\'](?P<class>[^"\'<>]+)["\']/i', '$1', $string);
$string = rtrim($string);
$string = ltrim($string);
$string = 'class="'.$string.'"';