如何使用正则表达式替换其他两个特定字符内的字符?

时间:2009-08-26 20:35:15

标签: php regex

我正在努力实现一种允许在我使用PHP的字段中使用HTML的方法。字符在输入时保存到数据库中,所以当我稍后将它们打印到屏幕上时,我希望HTML得到尊重(安全性不是问题,所以请不要将其设置为一个)。我现在需要的是一种方法,可以将任何&quot;个实例更改为正确的"字符,但只有当它出现在HTML声明中时(即<>字符)。如果它不在这些字符内,则不应更改。

用正则表达式做这样的事情的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

试试这个:

$str = preg_replace('/&quot;(?=[^<>]*+>)/', '"', $str);

根据您的描述,我认为您的意思是“在HTML 标记内”(声明并不意味着在此上下文中有任何意义)。我还假设标记内没有任何'<''>'个字符(因为它们在引用属性值中是合法的)。

前瞻(?=[^<>]*+>)断言前方有一个直角括号,此处和那里之间没有其他尖括号。假设每个尖括号都是平衡对的一部分,那应该意味着当前位置在HTML标记内。

答案 1 :(得分:0)

这样的东西可以找到标签吗? X是字符,但可以用字符串替换。

<[^>]*X[^>]*>

一个实际示例,查找以<a href开头的链接:

<a href="([^"]*)"[^>]*>.