我已经使用perl十年了.但最近我对使用它感到困惑.*?正则表达式.
它似乎与最小字符数不匹配.有时会产生不同的结果.
例如,对于这个字符串:aaaaaaaaaaaaaaaaaaaaaaammmmmmmmmmmbaaaaaaaaaaaaaaaaaaaaaa和pattern:a.*?b它匹配两组中的完整输入字符串.根据定义,它应该与最后的"ab"相匹配.
ctype_digit(0)
回报 FALSE
ctype_digit("0")
回报 TRUE
根据PHP的类型转换,0应该被提升为字符串"0".但是当调用0或1或2时,它不会被提升为字符串.为什么?
就像在C++中一样,可以在构造函数中初始化类常量吗?
与C++类似,它看起来像:
class Abc
{
const WIDTH;
public __constructor($width):WIDTH($width) //WIDTH gets assigned here and is immutable
{
//I know syntax may not be ok but is anything similar possible in PHP?
}
}
Run Code Online (Sandbox Code Playgroud) 我有这种格式的csv文件:
"Keyword" "Competition" "Global Monthly Searches" "Local Monthly Searches (United States)" "Approximate CPC (Search) - INR"
"kasperaky support" -0 -0 -0 -0
Run Code Online (Sandbox Code Playgroud)
第一行是列标题.
我已经在Text :: CSV中尝试了大多数选项,但我无法提取字段.
这里sep_char =>''
我最接近的是获得第一列的第一个单词(仅限"kasperaky").
我正在以这种方式创建对象(在尝试各种设置时):
my $csv = Text::CSV->new ( {
binary => 1 ,
sep_char=>' ',allow_loose_quotes=>0,quote_space=>0,quote_char => '"',
,allow_whitespace =>0, eol=>"\015\012"
} )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
Run Code Online (Sandbox Code Playgroud) 我在这里输入文件(请解压缩)和下面的代码.印刷后"pat = \n"; 它在模式匹配中挂起,而我在Windows任务管理器Perl(v5.010000)中看到占用25%的CPU时间:
use strict;
open FP, "<default.php" or die "can't read";
$/ = undef;
my $content = <FP>;
while ( $content =~ /(['"])([^\s\x00-\x1f]{300,})\1/gs ) {
#looks like we've found base encoded string etc
my $subpat = $2;
print "pat=<$subpat>\n";
if ( $subpat =~ m#(?:(....).{5,30}(?=\1)){50}#s ) {
print "hello world";
} else {
die("");
}
exit;
}
Run Code Online (Sandbox Code Playgroud)
编辑:理想情况下我想要找出连续组(最大50)中任何统一的字节重复模式(长度:4),其中每个组大小最多可以是4 + 30字节,最小可以是4 + 5字节.
例如(在每个大小为1到30个字节的组中重复'=>'):
'CS'=> '捷', '大'=> '丹麦', 'NL'=> '荷兰', '网络'=> '芬兰', 'FR'=> '法国', '德'=> '德国', '厄尔尼诺'=> '希腊', …
我需要帮助.当我提交此表单时,我希望它自动重定向到选择列表中的值选项(即url).
所以当按下选择列表中选择的艾哈迈达巴德提交时,它应该重定向到http://intranet.guj.nic.in/passport
目前它没有重定向.使用内联JavaScript代码执行此操作的最佳方法是什么?
<html><body>
<form id="pass-form" >
<select id="pass-dropdown" ><option selected="selected">Select Passport Office
for Status page </option><option value="http://intranet.guj.nic.in/passport/">Ahemadabad
</option><option value="http://passportstatus.nic.in/passmain.php?city=asr">Amritsar
</option><option value="http://rpobangalore.gov.in/npassport.asp">Bangalore
</option><option value="http://passportstatus.nic.in/passmain.php?city=bly">Bareilly
</option></select>
<input type="submit" onsubmit="var sel = document.getElementById('pass-dropdown'); window.location = sel.options[sel.selectedIndex].value" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我已经清除了缓存(通过单击管理/站点配置中的性能中的"清除缓存数据".但仍然在数据库中我看到表格的行:cache,cache_form等.当我清除/ Admin/Site Config中的缓存/ db大小的性能降低到它的50%大小.但是一些缓存表条目仍然存在.
要复制drupal安装,因为mysql在phpmyadmin或mysql命令行上导入时出错,我一直在手动删除所有这些缓存条目,然后导入它只是为了删除它的大小.我从来没有发现任何问题.但是,管理中是否有任何菜单/链接可以清理所有缓存条目以减少数据库大小?
我需要维基百科的国家页面才能在我的网站上使用.例如纽约,有一个关于这个城市的主页.所以,如果我有一个城市列表,我该如何下载这些页面?
这将是1000个城市.
我也听说维基百科不喜欢机器人访问它的页面.我将按照Creative Commons License使用这些信息.
如果我能够在perl脚本中编写代码,那就太好了.
我需要使用perl读取包含类似结构的许多HTML文件.
结构由STRRRR ... E组成
我想使用单行"m"perlop提取数组中的所有R.
我正在寻找这样的东西:
@all_Rs = $ htmlfile = ~m {ST(R)*E} gs;
但它从来没有成功过.
到目前为止,我一直在努力做到这一点,比如使用删除不需要的文本,循环等.我想从这个页面中提取所有行:http://www.trainenquiry.com/StaticContent/Railway_Amnities/Enquiry%20 - %20North/STATIONS.aspx 并且有很多这样的页面.