XPath(v1)无法编码表达式.
如果您只有单个OR双引号,那么您可以使用诸如的单词
//review[@name="Bob's Pizza"]
//review[@name='"Pizza" Pam']
Run Code Online (Sandbox Code Playgroud)
但是如果你有两个例如[弗雷德的"Fancy Pizza"]那么你必须在XPath(C++)中使用像Escaping Strings这样的东西来生成
//review[@name=Concat("Fred's ",'"Fancy Pizza"')]
Run Code Online (Sandbox Code Playgroud)
任何人都有c#函数来执行此操作?
一些链接很接近
编辑:一些答案建议转义'with '和',"但虽然这是有道理的,它不起作用;尝试使用XML片段:
<review name="Bob's Pizza"/>
Run Code Online (Sandbox Code Playgroud)
和xpath
//review[@name='Bob's Pizza']
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的XPath查询,包括单引号和双引号.如何正确地转义撇号以使查询有效?
我试过了:
"//li[text()='Frank's car']"
Run Code Online (Sandbox Code Playgroud)
但它似乎不适合我.
有任何想法吗?
"//li[text()='Frank's car']"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jsonpath解析PHP中的JSON ....
我的JSON来自于此
https://servizionline.sanita.fvg.it/tempiAttesaService/tempiAttesaPs
(这里剪切/粘贴太长了,但你可以在浏览器会话中看到它......)
JSON是一个有效的JSON(我已经使用https://jsonlint.com/ ... 验证了它).
我已经尝试使用http://www.jsonquerytool.com/的jsonpath表达式,所有看起来都很好,但是当我把所有的PHP代码示例放在下面....
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require_once('json.php'); // JSON parser
require_once('jsonpath-0.8.0.php'); // JSONPath evaluator
$url = 'https://servizionline.sanita.fvg.it/tempiAttesaService/tempiAttesaPs';
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_PROXY, '');
$data = curl_exec($ch);
curl_close($ch);
$parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
$o = $parser->decode($data);
$xpath_for_parsing = '$..aziende[?(@.descrizione=="A.S.U.I. - Trieste")]..prontoSoccorsi[?(@.descrizione=="Pronto Soccorso e Terapia Urgenza Trieste")]..dipartimenti[?(@.descrizione=="Pronto Soccorso Maggiore")]..codiciColore[?(@.descrizione=="Bianco")]..situazionePazienti..numeroPazientiInAttesa';
$match1 = jsonPath($o, $xpath_for_parsing);
//print_r($match1);
$match1_encoded = $parser->encode($match1);
print_r($match1_encoded); …Run Code Online (Sandbox Code Playgroud) 我刚刚从 7.3 升级到 php 8.1,并解决了一些损坏的问题。弹出的一条消息是“PHP 已弃用:addslashes()”。我们经常使用该命令,这并不是为了防止 mysql 注入。我们必须处理其中可能包含特殊字符的名称 ' ~ 等。
但是当我查看https://www.php.net/manual/en/function.addslashes.php时 ,它说 PHP8 支持它。
抱歉,我想我还是个新手……但我错过了什么?如果它已经出来了,那么现在支持的处理方式是什么?
更新以添加代码示例和问题澄清
现在我已经睡过了,我发现这不是addslashes() 上的弃用错误。这是一个错误,表明我们传递给函数的值为 NULL。我在文档中看到从 8.1 开始不再允许这样做。
因此,根据这些信息,处理以下示例的新的和改进的方法是什么。
$(function () {
$('.adminheader').html('<?php addslashes(GetMainEventNames()); ?>');
$('.maineventbuttons').button().each(function () {
var MainEventCode = $(this).attr('data-code');
$(this).click(function () {
ChangeLocalActiveStatus(MainEventCode);
});
});
Run Code Online (Sandbox Code Playgroud)
错误信息
PHP Deprecated: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated in....
Run Code Online (Sandbox Code Playgroud)