我继承了一个网站,只是遇到了这种好奇心:
<a href="/delete" onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>
Run Code Online (Sandbox Code Playgroud)
我可以显示包含它的页面并单击链接以获得与我将" jamoscript" 更改为" " 时完全相同的确认对话框javascript.在加载页面或单击链接时,Firebug控制台中不会显示任何诊断信息.嘿嘿?谷歌搜索jamoscript并没有发现任何有趣的东西.
任何人都可以解释这种行为吗?
我无法找到一个权威的答案,虽然我99.9%肯定这是真的.正如我所期待的许多其他代码所做的那样,依赖于它的接受答案是正确的.但真正了解某事的人preg_match_all(不是通过观察,而是通过指定的要求或指定的算法)可以确认这是保证行为吗?我无法从文档中收集它.
我的用例很简单:
preg_match_all("/$regexp/", $content, $matches, PREG_OFFSET_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
我知道它$regexp不包含任何子模式,因此文档告诉我$matches[0]将是一个2元素数组的数组,其中每个子数组都有数字键0的元素,其中包含与模式匹配的字符串,以及数字键1包含$content匹配发生的偏移量.虽然通过增加偏移量来排序数组元素似乎是合理的,但是我没有看到需要的地方,如果不是这样的话就会出现错误.虽然我无法想象它是如何实现有用的效果的,但也许有一些方法可以实现preg_match_all多个线程附加其部分结果而不会合并到完全排序的顺序.
在我的特殊情况下,我只关心偏移,而不是匹配的字符串,但偏移量增加至关重要.因此,我使用腰带和吊带心态编码:
preg_match_all("/$regexp/", $content, $matches, PREG_OFFSET_CAPTURE);
$offsets = array();
foreach ($matches as $match) {
$offsets[] = $match[1];
}
sort($offsets);
Run Code Online (Sandbox Code Playgroud)
换句话说,最后sort($offsets)是保证浪费周期吗?
如果它不会让我因为询问相关但可能是单独的问题而陷入困境,如果排序可能有用,那么采用SORT_REGULAR如图所示的默认标志或者SORT_NUMERIC明确指定是否会更多/更少/更有效内部产生的抵消preg_match_all必然是数字?
我在Amazon EC2云中的"Amazon Linux"(Centos派生的)32位实例上运行XAMPP 1.7.3a.我下载/构建/安装了XDEBUG 2.1.0.phpinfo()输出中的相关项如下所示:
Directive Local Value Master Value
xdebug.idekey ECLIPSE_DBGP ECLIPSE_DBGP
xdebug.default_enable On On
xdebug.remote_autostart On On
xdebug.remote_connect_back Off Off
xdebug.remote_cookie_expire_time 3600 3600
xdebug.remote_enable On On
xdebug.remote_handler dbgp dbgp
xdebug.remote_host 127.0.0.1 127.0.0.1
xdebug.remote_mode req req
xdebug.remote_port 9000 9000
xdebug.remote_log /opt/lampp/logs/xdebug_log
/opt/lampp/logs/xdebug_log
Run Code Online (Sandbox Code Playgroud)
我使用PuTTY版本0.60中的SSH客户端从运行XP SP3的Windows笔记本电脑访问Linux机器.另外在笔记本电脑上我已经安装了Eclipse PDT(Helios Service Release 1 Build id:20100917-0705),我想我已经正确配置了使用端口9000进行XDEBUG远程调试.我说我想,因为我'很难弄清楚如何做到这一点,以及如何使用Eclipse PDT.但我确实设法配置并使用端口9000在localhost(127.0.0.1)上使用XAMPP for Windows 1.7.3提供的网页运行的PHP代码的"远程"调试工作.服务器的phpinfo()输出在笔记本电脑,其PDT 是能够调试是与上述相同,除了:
xdebug.idekey my_username no value
xdebug.remote_host localhost localhost
xdebug.remote_log no value no value
Run Code Online (Sandbox Code Playgroud)
我很确定这些差异与问题无关.事实上,xdebug.idekey最初是Linux上的"root novalue",然后我通过编辑php.ini并在启动apache的sudo-ed脚本中设置环境变量DBGP_IDEKEY来更改为ECLIPSE_DBGP,徒劳地希望让事情正常工作.
笔记本电脑和Linux机箱之间有防火墙和NAT路由器.所以我试图通过PuTTY ssh隧道使用端口转发来使Linux XDEBUG与Windows PDT通信.我一直在使用XT转发PuTTY几个月没有任何问题.我在PuTTY中设置了隧道,本地端口9000转发到Linux机箱上的9000端口,Linux机箱上的端口9000转发到127.0.0.1上的端口9000,PuTTY隧道面板显示:
L9000 host...amazonaws.com:9000
R9000 …Run Code Online (Sandbox Code Playgroud) 我已经看到几个关于获取用户认为正确的地址的ZERO_RESULTS的问题,这些问题通过纠正使用错误(例如,无法对地址进行urlencode)或通过将地址调整为谷歌期望的表格来解决(例如拼写出来) "street"而不是使用含糊不清的缩写"st").
但是我看到了几个地址,我的原始表单在网上被maps.google.com更正,然后正确显示地图上的位置.但是,将修正后的形式提供给地理编码API仍然会获得ZERO_RESULTS.
我通过下面的例子通过反复试验找到了删除城镇名称(吉尔福德),只留下邮政城镇(克雷加文),允许它地理编码到街道地址.在更正用户输入时,谷歌地图Web应用程序包括城镇(并更正其拼写).并且地理编码结果中的"formatted_address"字段实际上将城镇添加回(作为"地点").但是在地理编码的输入地址中存在城镇会导致它找不到任何结果.有谁能解释一下?这是关于英国地址的特别之处吗?Google的文档中是否有可能解释此行为的内容?
这是一个具体的例子:
原始地址:30 Drumnascumph Rd,Guildford,Craigavon,United Kingdom,BT63 6DU
地图更正为:30 Drumnascamph Road,Gilford,Craigavon,United Kingdom,BT63 6DU
原始地址和更正地址都提供了与地理编码相同的结果:
{"results" : [], "status" : "ZERO_RESULTS" }
如果我更改已更正的表单只是为了删除城镇(地区),那么地理编码结果将更改为:
{
"results" : [
{
"address_components" : [
{
"long_name" : "30",
"short_name" : "30",
"types" : [ "street_number" ]
},
{
"long_name" : "Drumnascamph Road",
"short_name" : "Drumnascamph Rd",
"types" : [ "route" ]
},
{
"long_name" : "Gilford",
"short_name" : "Gilford",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Craigavon", …Run Code Online (Sandbox Code Playgroud) google-maps google-maps-api-3 google-geocoder google-geocoding-api