我有一个像这样的字符串:
abc=foo&def=%5Basf%5D&xyz=5
如何将其转换为像这样的JavaScript对象?
{
abc: 'foo',
def: '[asf]',
xyz: 5
}
Run Code Online (Sandbox Code Playgroud) 我有一个HTML表单字段$_POST["url"],其中包含一些URL字符串作为值.示例值为:
https://example.com/test/1234?email=xyz@test.com https://example.com/test/1234?basic=2&email=xyz2@test.com https://example.com/test/1234?email=xyz3@test.com https://example.com/test/1234?email=xyz4@test.com&testin=123 https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com
等等
如何email从这些URL /值中仅获取参数?
请注意,我没有从浏览器地址栏中获取这些字符串.
我有这个网址:
site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc
Run Code Online (Sandbox Code Playgroud)
我需要的是能够将'rows'url param值更改为我指定的内容,比方说10.如果'rows'不存在,我需要将它添加到url的末尾并添加价值我已经指定(10).
是否可以在javascript中创建一个新的Location对象?我有一个url作为字符串,我想利用javascript已经提供的访问它的不同部分.
这是我正在谈论的一个例子(我知道这不起作用):
var url = new window.location("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
// etc etc
Run Code Online (Sandbox Code Playgroud)
这样的事情是可能的,还是我自己必须自己创建这个对象?
我最近正在寻找一种方法来正确地确定协议,在该协议下,url请求被提供给服务器.
我看过parse_url()并通过$_SERVER超全局变量,发现了这个:
<?php
header('Content-Type: text/plain');
print_r($_SERVER);
?>
Run Code Online (Sandbox Code Playgroud)
输出:
[REQUEST_SCHEME] => http
但是,我无法在php.net或Google 上找到它.虽然,我能够找到这个问题.问题1:如果$_SERVER['REQUEST_SCHEME']没有记录,那么它可能不可靠,或者它可以被信任?
我VC9 PHP 5.4.14 TS在windows下用于开发.但我的生产是在ubuntu下.问题2:这个属性在ubuntu linux下也可用吗?
我想获取URL中的最后一个路径段:
http://blabla/bla/wce/news.php 要么http://blabla/blablabla/dut2a/news.php例如,在这两个URL中,我想获得路径段:'wce'和'dut2a'.
我尝试使用$_SERVER['REQUEST_URI'],但我得到了整个URL路径.
我知道这可以使用PHP parse_url和parse_str函数轻松完成:
$subject = "http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1";
$url = parse_url($subject);
parse_str($url['query'], $query);
var_dump($query);
Run Code Online (Sandbox Code Playgroud)
但是如何使用Python实现这一目标?我可以做urlparse但接下来呢?
给定页面的绝对URL以及在该页面中找到的相对链接,是否有办法a)明确重建或b)尽力重建相对链接的绝对URL?
在我的情况下,我正在使用漂亮的汤从一个给定的URL读取一个html文件,删除所有img标记源,并尝试构建页面图像的绝对URL列表.
到目前为止我的Python函数看起来像:
function get_image_url(page_url,image_src):
from urlparse import urlparse
# parsed = urlparse('http://user:pass@NetLoc:80/path;parameters?query=argument#fragment')
parsed = urlparse(page_url)
url_base = parsed.netloc
url_path = parsed.path
if src.find('http') == 0:
# It's an absolute URL, do nothing.
pass
elif src.find('/') == 0:
# If it's a root URL, append it to the base URL:
src = 'http://' + url_base + src
else:
# If it's a relative URL, ?
Run Code Online (Sandbox Code Playgroud)
注意:不需要Python答案,只需要逻辑.
我需要解析一个URL.我目前正在使用urlparse.urlparse()和urlparse.urlsplit().
问题是,当不存在该方案时,我无法从URL获取"netloc"(主机).我的意思是,如果我有以下网址:
www.amazon.com/Programming-Python-Mark-Lutz/dp/0596158106/ref=sr_1_1?ie=UTF8&qid=1308060974&sr=8-1
我无法获得netloc:www.amazon.com
根据python文档:
遵循RFC 1808中的语法规范,只有在'//'正确引入的情况下,urlparse才会识别netloc.否则,输入被假定为相对URL,因此以路径组件开始.
所以,这是故意的.但是,我仍然不知道如何从该URL获取netloc.
我想我可以检查该方案是否存在,如果不存在,则添加它,然后解析它.但是这个解决方案看起来并不是很好.
你有更好的主意吗?
编辑: 谢谢你的所有答案.但是,我不能做Corey和其他人提出的"startwith"事情.如果我得到一个其他协议/方案的URL我会搞砸了.看到:
如果我得到这个网址:
ftp://something.com
Run Code Online (Sandbox Code Playgroud)
使用提议的代码,我会在开头添加"http://"并将其弄乱.
我发现的解决方案
if not urlparse.urlparse(url).scheme:
url = "http://"+url
return urlparse.urlparse(url)
Run Code Online (Sandbox Code Playgroud)
需要注意的事项:
我先做一些验证,如果没有给出方案,我认为它是http://
我\xe2\x80\x99m 试图理解为什么某些 HTML 属性未通过 W3C 验证。我在真实的代码库中遇到了这个问题,但这里\xe2\x80\x99s是一个最小的复制:
\n<!DOCTYPE html><html lang="en"><head><title>a</title></head><body>\n\n<img alt="1" src="\xe2\xad\x90">\n<img alt="2" src="/\xe2\xad\x90">\n<img alt="3" src="/a\xe2\xad\x90">\n<img alt="4" src="/a/\xe2\xad\x90">\n<img alt="5" src="">\n<img alt="6" src="/"> <!-- Only this is invalid. -->\n<img alt="7" src="/a">\n<img alt="8" src="/a/">\n\n</body></html>\nRun Code Online (Sandbox Code Playgroud)\nW3C 验证器仅报告一个错误,影响第六张图像:
\n\n\n\n
\n- \n
错误:元素
\n/属性值错误:路径段中存在非法字符:不允许。srcimg?Run Code Online (Sandbox Code Playgroud)\n<img alt="6" src="/">\n
为什么只有这个有问题,其他的没有?\xe2\x80\x99 有什么不同?
\nurl-parsing ×10
javascript ×3
php ×3
python ×3
url ×3
html ×2
emoji ×1
jquery ×1
parsing ×1
query-string ×1
regex ×1
urlparse ×1