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

最初の2つの正規表現は、文字列の先頭でのみ一致します(修飾子^を使用する場合は、各行の先頭でのみ一致します)。/m

しかし、これらの正規表現は、おそらくあなたが望んでいることを実行しないでしょう。現在、ドットまたはハッシュを探していますが、それらが文字列/行(または任意のコンマ)の最初の文字であり、それらを.classおよびそれ自体に置き換えている場合に限ります。正規表現にキャプチャグループがないため、これ\1は役に立ちません。

于 2012-07-23T08:16:38.787 に答える