我想在某些html元素中只添加双引号的斜杠这是我的工作方式,但它不适用于我:
$str ="
<table class="body-wrap" style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; width: 100%; margin: 0; padding: 0;">
<tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">
<td style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">this is my test</td></tr></table> ";
这是我的php函数:
$str2 = addcslashes($str, '"');
我认为我的字符串开头有问题,我不知道如何声明:
$str =" or $str = '
对我来说都没有工作
答案 0 :(得分:2)
删除字符串$str =" or $str = '
,因为这是完全错误的。
1)使用CSS样式表将CSS存储在HTML之外,避免重复。
2)在HTML语法中使用单引号(并且您的PHP字符串是双引号),以避免完全转义HTML(javascript元素将是例外)。
CSS文件
.body_wrap_table {
width: 100%;
}
.table_td_tr {
font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
margin: 0;
padding: 0;
}
HTML PHP字符串
$str = " <table class='body-wrap body_wrap_table'>
<tr class='table_td_tr'>
<td class='table_td_tr'>this is my test</td></tr></table>
";
因此根本不需要报价。
3)如果您真的想这样做,可以使用Regex function Preg_replace
,例如:{/ p>
$str = preg_replace('/"+(?<!\\")/', '\"', $str);
此正则表达式将匹配任何"
字符,其中不前面有\
个字符,并且替换为转义引号。
4)一个可能更简单的方法可能会或可能不是一个解决方案(并且比Regex更少的处理器)是简单地使用str_replace,如:
$str = str_replace("\"","\\\",$str);
这会将符合"
形状的任何文本替换为\"
,但如果引号已在其前面有转义标记,则可能会导致双重转义。
<强>参考文献:强>
答案 1 :(得分:1)
您不需要函数,因为您在PHP变量中编写HTML,您可以使用反斜杠\"
自行转义双引号:
$str ="
<table class=\"body-wrap\" style=\"font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; width: 100%; margin: 0; padding: 0;\">
<tr style=\"font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;\">
<td style=\"font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">this is my test</td></tr></table> ";
规则是:如果您使用单引号'
,则只需要使用单引号\'
,如果您使用双引号"
,则需要将它们转义\"
}。
答案 2 :(得分:1)
$str ="
而非$str = '
都不起作用。该字符串包含这两个字符。
您无法以编程方式将斜杠添加到当前程序的源代码中的断字符串文字中。字符串文字是一个错误,导致程序中止。
您需要手动修复它(通过添加斜杠字符)(或使用文本编辑器的搜索和替换功能)。