所以我有一个包含这样的标志的字符串:<< - name - >>现在我想替换所有这些''。
我做了以下功能:
function removeFlags($output) {
$output = preg_replace('/\<<--[^-->>]+-->>/', '', $output);
return $output;
}
它适用于大多数标志,但不包含数字时。 例如:&lt;&lt; - Model - &gt;&gt;将被替换为&#39;&#39;,但&lt;&lt; - 360 - &gt;&gt;不会被删除。
我做错了什么?
答案 0 :(得分:2)
这应该对你有用,因为你想要替换某个模式之前和之后的任何东西
$output = preg_replace('/\<<--.+?-->>/', '', $output);
我认为你的模式也适用于数字,但这些数字在它们之前和之后是否有空格?
答案 1 :(得分:1)
此模式有效:
select sum(Happy) as HappyCount, sum(Sad) as SadCount from tablename
答案 2 :(得分:1)
character class内的连字符-
表示范围。您不小心negating范围从-
到>
,其中包含数字0-9
,因此无法匹配<<-- 360 -->>
要按字面意思匹配连字符,请将其置于课程的开头或结尾,或使用反斜杠将其转义。
此外,您只需要在字符类中添加一个不同的字符。
<<--[^>-]+-->>