1

嗨,我正在创建一个生成器表单来替换我拥有的一些 CSS 代码......它会找到所有的类和 id 以及点,并将 .class 放在它们前面......

现在它只替换了我将限制设置为-1的第一场比赛......为什么它忽略它?

html:

<form action="get_html.php" method="post" id="form">
    html:<textarea rows="50" cols="80" id="html_box" name="html" type="text" align="texttop"></textarea>
    <input id="button" type="submit" value="submit"></input>
</form>

get_html.php

<?php 
    $html= $_POST["html"]; 
    $string = (string)$html;
    $patterns = array();
    $patterns[0] = '/^[.]/';
    $patterns[1] = '/^[#]/';
    $patterns[2] = '/,/';
    $replacements = array();
    $replacements[0] = '.class .\1';
    $replacements[1] = '.class #\1';
    $replacements[2] = ', .class \1';
    $str= preg_replace($patterns,$replacements, $string, -1);
?>
<textarea rows="50" cols="80"><?php echo $str; ?></textarea>
4

1 回答 1

2

您的前两个正则表达式只能在字符串的开头匹配(如果您使用修饰符^,则只能在每行的开头匹配)。/m

但是那些正则表达式可能不会做你想让他们做的事情。现在您正在寻找一个点或一个哈希,但前提是它们是字符串/行(或任何逗号)的第一个字符并将它们替换为.class和它们自己。这\1是没用的,因为您的正则表达式中没有捕获组。

于 2012-07-23T08:16:38.787 回答