【发布时间】:2011-05-09 11:23:01
【问题描述】:
字符串看起来像超链接,例如http://somethings。这就是我需要的:
- 只有当它们不以字符
"开头时,我才需要检查它们;我的意思是,只有那些字符:如果之前没有字符,它必须检查; - 那个
somethings字符串表示除了空格(结束标记链接)之外的所有字符都可以使用(当然是链接);我知道,这是 RFC 允许的,但这是我知道的唯一逃避方式; - 这些字符串之前使用
htmlentities($str, ENT_QUOTES, "UTF-8")过滤,这就是为什么可以使用各种字符的原因。它安全吗?还是我冒着 xss 或 html 损坏的风险? - 此替换的出现次数可以是多次,而不仅仅是 1,而且必须不区分大小写;
这是我的实际正则表达式:
preg_replace('#\b[^"](((http|https|ftp)://).+)#', '<a class="lforum" href="$1">$1</a>', $str);
但它只检查那些以“开头的字符串,我想要相反的结果。回答这个问题的任何帮助都会很好,谢谢!
【问题讨论】:
-
1 - 您需要将单词拆分为单独的字符串。那么正则表达式将是
[^"].* -
[^"] 应该可以工作,但如果这个词是第一个词,它不会(因为之前没有任何字符。