2010-05-13 62 views
1

我正在开发一个使用PHP的应用程序,但我是新手正则表达式,我无法找到解决我的问题的方法。我想用一个链接来替代#word出现的所有,我已经写了的preg_match此:PHP正则表达式问题

$text=preg_replace('~#([\p{L}|\p{N}]+)~u', '<a href="/?aranan=$1">#$1</a>', $text); 

的问题是,这个正则表达式匹配也像

&#039; 

和HTML字符代码给出了损坏的输出。我需要排除以&#开头的单词,但我不知道如何使用正则表达式来做到这一点。

感谢您的帮助。

回答

0

您需要在正则表达式语句中添加[A-Za-z]规则,以便它仅限于字母和数字。

我会稍后编辑一个例子。

+0

我认为他想的数字,因为他是用\ p {L} | \ p {N}不只是\ p {L} – 2010-05-13 17:43:10

+0

的问题是不是数字,我还需要这个词中的数字。 问题是&开头的符号。 – user340538 2010-05-13 17:43:16

+0

嗯,是的我刚刚意识到它通过重读你的问题。但至少你得到了你的问题的答案。 – 2010-05-13 17:50:14

1

http://gskinner.com/RegExr/

使用这个在线的正则表达式构造函数之前。他们对每个可能想要使用的国旗都有解释。并且您将在示例文本中看到突出显示的匹配项。

和是使用[A-ZA-Z]

+0

我需要其他语言的字母,这就是为什么我不使用[a-zA-Z]。 – user340538 2010-05-14 21:49:09

+0

还有一些mbstring正则表达式函数,它们有助于使用nonlatin匹配..或stmng像这样=) – holms 2010-05-31 01:08:32