Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:替换所有“文件”;"富",;字符串介于“之间”;风格=';()'&引用;使用正则表达式_Php_Regex_Preg Replace - Fatal编程技术网

PHP:替换所有“文件”;"富",;字符串介于“之间”;风格=';()'&引用;使用正则表达式

PHP:替换所有“文件”;"富",;字符串介于“之间”;风格=';()'&引用;使用正则表达式,php,regex,preg-replace,Php,Regex,Preg Replace,可能重复: 你好, 我试图使用regex替换()之间的所有foo字符串,而style=“和” 下面是一个例子: blah blah foo blah style="foo text blah (foo and blah foo)" 应将其替换为: blah blah foo blah style="foo text blah (bar and blah bar)" 我试图使用这个代码,但它不工作 do { $code = preg_replace('/(style\=\"[^)]*)l

可能重复:

你好,

我试图使用regex替换
()
之间的所有
foo
字符串,而
style=“和”

下面是一个例子:

blah blah foo blah style="foo text blah (foo and blah foo)"
应将其替换为:

blah blah foo blah style="foo text blah (bar and blah bar)"
我试图使用这个代码,但它不工作

do {
  $code = preg_replace('/(style\=\"[^)]*)left(?=[^()]*\))([^)]*\")/U', '\1tempvalue\3', $code, -1, $count);
} while($count != 0);
然后我尝试使用foreach获得结果,然后使用preg\u replace正常替换它


我希望找到答案:),,谢谢。

适用于您的字符串,可能需要修改一点才能在所有情况下工作

echo preg_replace_callback('/style="(.*)(\(.+\))"/',create_function(
   '$matches',
    'return "style=\"" . $matches[1] . preg_replace("/foo/","bar",$matches[2]) . "\"";'
),'blah blah foo blah style="foo text blah (foo and blah foo)"');

适用于字符串,可能需要修改一点才能在所有情况下工作

echo preg_replace_callback('/style="(.*)(\(.+\))"/',create_function(
   '$matches',
    'return "style=\"" . $matches[1] . preg_replace("/foo/","bar",$matches[2]) . "\"";'
),'blah blah foo blah style="foo text blah (foo and blah foo)"');

使用以下正则表达式:

/style=".*?\((.*?)\)"/
说明:

  • style=
    匹配相同的内容
  • *?
    匹配任何字符,但不要以贪婪的方式,尽可能少地匹配
  • \(
    匹配(
  • (.*)
    匹配样式和括号之间的任何字符,这意味着这是您应该替换的信息
  • \)“
    匹配项)”

您可以使用该工具构建正则表达式字符串。它非常有用,它有一些示例,可以告诉您哪些部分与哪个字符串匹配。

使用以下正则表达式:

/style=".*?\((.*?)\)"/
说明:

  • style=
    匹配相同的内容
  • *?
    匹配任何字符,但不要以贪婪的方式,尽可能少地匹配
  • \(
    匹配(
  • (.*)
    匹配样式和括号之间的任何字符,这意味着这是您应该替换的信息
  • \)“
    匹配项)”
您可以使用该工具构建正则表达式字符串。它非常有用,它有一些示例,可以告诉您哪个部分与哪个字符串匹配。

一个有效的正则表达式是:

style="[^(]*\(([^)]*)\)"
但是,由于您将有多个匹配项(0表示整个匹配项,1表示括号中的值),因此必须使用工作正则表达式:

style="[^(]*\(([^)]*)\)"

但是,由于您将有多个匹配项(0表示整个匹配项,1表示括号中的值),因此必须使用这可能是
PREG\u REPLACE\u EVAL的一个很好的用法:

输出
这可能是
PREG\u REPLACE\u EVAL
的一个很好的用法:

输出
不是一个好的做法;顺便说一句,您是否需要thid:使用
preg\u replace\u callback
查找
style=“.*”
,然后使用第二个正则表达式来调整括号中的搜索文本。哦,看起来您以前得到过这样的建议:这不是一个好做法;顺便说一句,您是否需要thid:使用
preg\u replace\u callback
查找
style=“.*”
,然后使用第二个正则表达式来调整括号中的搜索文本。哦,看起来您以前得到过该建议: