我试图让preg_replace_callback只返回一个匹配,如果它不包含某个字符。preg_replace_callback(正则表达式)如果字符串不包含字符
因此,如果字符串包含:
{xxxx}
返回匹配。 如果它包含:
{xxxx|xxxx}
不返回匹配。
这里是我的尝试:
\{(.*?!\|.*)}
感谢你们!
我试图让preg_replace_callback只返回一个匹配,如果它不包含某个字符。preg_replace_callback(正则表达式)如果字符串不包含字符
因此,如果字符串包含:
{xxxx}
返回匹配。 如果它包含:
{xxxx|xxxx}
不返回匹配。
这里是我的尝试:
\{(.*?!\|.*)}
感谢你们!
您的全模式将是这样的:
/{([^|]*)}/
匹配任何字符,这不是一个管道,周围的花括号包裹。
您正在寻找character classes。这里的 “任何字符除了|
”:
[^|]
应该/{([^|])*}/
。它将匹配任何没有|
字符的字符串,甚至是空字符串。
这更像是一种“黑名单”方法。如果您知道有效字符是什么,则应该使用“白名单”方法(字符类别[]
中允许的字符列表),因为当前方法还允许字符串中的字符(如#[email protected]~<?>":'{}[]
)。
为什么当我应用此更改会崩溃我的localhost apache服务器? –
是的。正是我需要的。谢谢 :) –