我在字符串
中使用preg_replace进行查找和替换我的字符串是$string = if ($('input[name="name[3]"]').is(":checked")) {
我只想围绕""
,所以我尝试了
$find = "/(if \(\$\('input\[name=\"name\[3\]\"\]'\).is\(\":checked\"\)\) {)[\s]+/";
$replace = '"$1"';
preg_replace($find, $replace, $string);
当我运行此查询时,我看到字符串中没有任何变化,我的意思是没有双引号。
我在这里做了很多事,但我无法提供所有东西,对不起。
更新:在sublimeText3中,它的工作正常,如查找和替换
注意:我相信因为$ sign
答案 0 :(得分:0)
你的正则表达式被双引号括起来,导致美元符号$
的转义问题。
你可以试试这个正则表达式:
/(if\s\([$]\('input\[name=\"name\[3]\"]'\)\.is\(\":checked\"\)\)\s{)[\s]*/
以下是我改变的内容:
\$
至[$]
。如果您将其更改为\\$
reasons-for-visit\[3\]
至name\[3]
不确定这是否是拼写错误或其他内容,如果需要,可以将其更改回来。[\s]+
至[\s]*
,因为+
是一个或多个。如果之后没有空间,它将无法工作。所以它会是:
$find = "/(if\s\([$]\('input\[name=\"name\[3]\"]'\)\.is\(\":checked\"\)\)\s{)[\s]*/";
$replace = '"$1"';
preg_replace($find, $replace, $string);
var_dump
结果将是:
string(50) ""if ($('input[name="name[3]"]').is(":checked")) {""
您可以使用单引号代替正则表达式。
$string = 'Hello $World';
$regex = "/\$/";
var_dump(preg_replace($regex, '!', $string));
string(13) "Hello $World!"
$string = 'Hello $World';
$regex = '/\$/'; // Notice the single quote
var_dump(preg_replace($regex, '!', $string));
string(12) "Hello !World"
$string = 'Hello $World';
$regex = "/\\$/";
var_dump(preg_replace($regex, '!', $string));
string(12) "Hello !World"