PHP:字符串中的正则表达式和哈希键
问题描述:
如何解决正则表达式中的特殊字符? @ ? # $ % %...
此模式搜索前缀和后缀之间的字母。PHP:字符串中的正则表达式和哈希键
$pattern = '/((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i';
$string = 'end';
$prefix = 'e';
$letter = 'n';
$suffix = 'd';
但如果$string
灵石#
$string = '#end';
$prefix = ???
编辑:这是在充分
$text = "<p>Newton, Einsteing and Edison. #end</p>"
$pattern = '/((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i';
echo preg_replace($pattern, '<b>\1</b>', $text);
preg_replace函数这个替换所有n
字母一个大胆的n
但应该剔除n
#end
答
您必须用双引号括起您的模式以使变量插值。
$pattern = "/((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i";
此外,您还可以定义$ prefix(小写)并使用$ PREFIX(大写)。因此,字迹变得以下,为我工作得很好:
<?php
$PREFIX = 'e';
$LETTER = 'n';
$SUFFIX = 'd';
$text = "<p>Newton, Einsteing and Edison. #end</p>";
$pattern = "/((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i";
echo preg_replace($pattern, "<b>$1</b>", $text),"\n";
?>
输出:
<p><b>N</b>ewto<b>n</b>, Ei<b>n</b>stei<b>n</b>g a<b>n</b>d Ediso<b>n</b>. #end</p>
无代码格式:
ň ewto ñ,EI ñ STEI n ga n d Ediso n。 #end
+0
非常感谢! – Zebra 2010-09-23 15:35:52
答
你必须首先用反斜杠转义特殊字符。 但是由于反斜线已经在字符串中转义字母,所以您必须首先转义您的反斜杠。
$string = '\\#end';
一个更好的办法来做到这一点是使用你的字符串preg_quote()
功能,并指定你用什么样的分隔符(这里“/”)。
preg_quote($string, '/');
啊,'\ b'不起作用更成问题。 – Wrikken 2010-09-21 16:53:37