Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用实体转义PHP echo中的JS_Javascript_Php_Escaping - Fatal编程技术网

Javascript 使用实体转义PHP echo中的JS

Javascript 使用实体转义PHP echo中的JS,javascript,php,escaping,Javascript,Php,Escaping,(关于在PHP中转义JS,在SE上有很多问题,但我仍然无法确定在所有情况下作为规则使用的最佳方法。) 考虑页面上的脚本: echo '<a class="x2delete" onclick="if ( confirm("Are you sure you want to delete " + ' . $img . ') ) { DeleteImage('."'".$img."'"." ,' ".$count."'".'); return false; }" href="javascri

(关于在PHP中转义JS,在SE上有很多问题,但我仍然无法确定在所有情况下作为规则使用的最佳方法。)

考虑页面上的脚本:

echo '<a class="x2delete"  onclick="if ( confirm("Are you sure you want to delete " +  ' . $img  . ') ) { DeleteImage('."'".$img."'"." ,' ".$count."'".'); return false; }" href="javascript:;"></a>';
我还尝试了
'
/\
\/
,以及其他各种方法,但所有转义方法都失败了,直到我决定只使用正确的XML实体表示形式

因此,
适用于此特定代码。(甚至可以认为是逃跑吗??)

我的问题是:

  • 使用它正确吗
  • 使用
    进行转义“
    在php中回显js时是否对我有效? 我是否可以一直使用它而不是其他转义方法(对我来说,这只是尝试和错误…)

  • 它会在所有浏览器上都工作吗

  • (一个额外的非强制性/相关问题)。为什么我需要在
    confirm()
    ?“只写”旁边加括号

    如果确认(“您确定要删除吗?”)


  • 给我一个缺少括号的错误。我确信它将在单个条件/行中工作。

    您需要插入一个文本反斜杠,这意味着使用
    \

    echo '<a class="x2delete"  onclick="if ( confirm(\\"Are you sure you want to delete...
    

    echo'这是我们想要的最终结果,对吗

    单引号或双引号:

     confirm('are you sure you want to delete?');
    
    单引号:

     confirm("are you sure you want to delete?");
    
    双引号:

     confirm('are you sure you want to delete?');
    
    所以现在的问题是,如何将其包装成php代码“练习。唯一的好做法是以对您、您在同一团队中工作的同事程序,以及以后可能加入团队的joiner程序员可读的方式进行操作。在这里,我将分享我在参与的几个项目中看到的一些实践

    一旦项目中存在一种模式,建议遵循该模式。所以,如果您的项目遵循反斜杠转义,那么最好就是这样做

    练习1:关闭php标记,编写html,再次打开php。为内联变量打开php

    ?>
    <a onclick="confirm('Do you like this patter?')" href="<?php echo $ref_link ?>">Click Me!</a>
    <?
    
    它将被解析为:

    onclick="confirm("Is this ok?")" 
    
    至于你的问题1-3,即使每个人都告诉你“是”,它也会起作用。你不可能真正知道,除非你自己尝试。浏览器变了,语言变了,编译器也变了,所以最好的方法就是亲自测试它

    关于你的最后一个问题:

    if confirm('Are you sure you want to delete ?')
    
    如果
    是一个语言构造,并且条件必须包含在一对括号中,则不能执行该操作。通过使用一个语句体,可以跳过条件体
    {}
    。我相信这在编程语言中很常见,至少在我尝试过的那些语言中是如此


    它在语法上是有效的。但是它被认为是不好的风格。

    好的。谢谢但我并不是在寻找特定于代码的答案——现在我的代码也可以与
    一起使用。我的问题是,在PHP echo(即,或等效实体)中始终使用它是否合适……您可以尝试在CodeReview()中问这个问题社区期待着回答这样的问题。@ Joraid -但我不是在寻找一个代码特定的答案(同样,我对这两个站点之间的重叠感到困惑)+ 1你的问题非常有趣。所以主要是针对特定代码的答案,它可以考虑几个有效的答案(一个观点)。然后,正如我所注意到的,这里的人不喜欢这种东西。然而,通过阅读CR中的一些问题,他们实际上讨论了模式和实践。但是关于
    实体
    ?据我所知,“将很好地工作。但我个人不会使用它,因为它会降低代码的可读性(我不喜欢它的外观)并且有更多的字符,因此,增加文件大小和更多的网络传输时间(如果你有数百个字符串)。尽管这不会有多大影响。但这是我的观点。此外,我从未见过有人真正遵循这种做法。
    onclick='confirm("Is this ok?")' 
    
    onclick="confirm("Is this ok?")" 
    
    if confirm('Are you sure you want to delete ?')
    
    if(true)alert("yes"); else alert("no");