1

正規表現の作成に助けが必要です

blah blah blah blah <?= __l(array('key'=>'SOMEVALUE','default'=>'string string string')) ?>blah blah

「SOMEVALUE」と「文字列文字列」を削除できるようにしたい

前もって感謝します

====== 「これは私が持っているものです」 ========

$subject = "Blah blah ja ja blah blah jank junk jonk <?= __l(array('key'=>'KEYKEYKEY','default'=>'I am a monkey sigh\'s')) ?> ldjlsakfdj as;dfj as;flkj a fsd  ljaasfd <?= __l(array('key'=>'KEYKEYKEY','default'=>'I am a monkey sigh\'s')) ?>  ";
$pattern = '#\_\_l\(array\(\'key\'=>\'(.*)\',\'default\'=>\'(.*)\'\)\)#';



if (preg_match_all($pattern, $subject)) {
print "A match was found.";
} else {
print "A match was not found.";
}

print '<br />';

preg_match_all($pattern, $subject, $matches);

echo '<pre>';
print_r($matches);
echo '</pre>'
4

2 に答える 2

4

あなたの正規表現は少し複雑すぎます。次のようにしてみてください。

$regex = "/'key'=>'[^']+','default'=>'[^']+'/";
$string = preg_replace( $regex, "'key'=>'','default'=>''", $string);

正規表現は次のとおりです。

'key'=>'        - Match this literally
[^']+           - Match anything that's not a single quote, one or more times
','default'=>'  - Match this literally
[^']+           - Match anything that's not a single quote, one or more times
'               - Match this literally

そして、置換は単純に の 2 番目のパラメーターpreg_replace()です。

于 2012-07-30T01:43:16.987 に答える
1

これが私が思いついた答えです:

$pattern = '#\_\_l\(array\(\'key\'=>\'(.*?)\',\'default\'=>\'(.*?)\'\)\)#';

しかし、私はあなたがより良いニックブに答えるのが好きなので、あなたに投票します

于 2012-07-30T01:56:28.177 に答える