我正在努力实现一种允许在我使用PHP的字段中使用HTML的方法。字符在输入时保存到数据库中,所以当我稍后将它们打印到屏幕上时,我希望HTML得到尊重(安全性不是问题,所以请不要将其设置为一个)。我现在需要的是一种方法,可以将任何"
个实例更改为正确的"
字符,但只有当它出现在HTML声明中时(即<
和>
字符)。如果它不在这些字符内,则不应更改。
用正则表达式做这样的事情的正确方法是什么?
答案 0 :(得分:2)
试试这个:
$str = preg_replace('/"(?=[^<>]*+>)/', '"', $str);
根据您的描述,我认为您的意思是“在HTML 标记内”(声明并不意味着在此上下文中有任何意义)。我还假设标记内没有任何'<'
或'>'
个字符(因为它们在引用属性值中是合法的)。
前瞻(?=[^<>]*+>)
断言前方有一个直角括号,此处和那里之间没有其他尖括号。假设每个尖括号都是平衡对的一部分,那应该意味着当前位置在HTML标记内。
答案 1 :(得分:0)
这样的东西可以找到标签吗? X
是字符,但可以用字符串替换。
<[^>]*X[^>]*>
一个实际示例,查找以<a href
开头的链接:
<a href="([^"]*)"[^>]*>.