您好我正在创建一个替换的生成器表单 我有一些CSS代码...它会找到所有的 class和id以及dot和place .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>
答案 0 :(得分:2)
您的前两个正则表达式只能在字符串的开头匹配(^
只在每行的开头匹配(如果您使用/m
修饰符)。
但是那些正则表达式可能不会做你想让他们做的事情。现在你正在寻找一个点或一个哈希,但前提是它们是字符串/行(或任何逗号)的第一个字符,并用.class
和它们自己替换它们。 \1
没用,因为你的正则表达式中没有捕获组。