我在理解这个简单使用/ e正则表达式修饰符时遇到了一些麻烦.
my $var = 'testing';
$_ = 'In this string we are $var the "e" modifier.';
s/(\$\w+)/$1/ee;
print;
Run Code Online (Sandbox Code Playgroud)
返回:"在这个字符串中,我们正在测试"e"修饰符."
我不明白为什么需要两个'e'修饰符.据我所知,$ 1应该从字符串中捕获'$ var',然后单个'e'修饰符应该能够用它的值替换变量.但是我必须误解一些东西,因为只用一个'e'修饰符来尝试上面的代码并不会明显地替换字符串中的任何内容.
请问这么简单的问题!
谢谢.
我目前正在向Paypal Express发布常规交易,并且没有错误地到达网关.
我现在想配置我的购物车向网关发送折扣.我的第一个想法是修改发送到网关的"AMT"值.然而,似乎贝宝通过计算总的验证"AMT"字段ITEMAMT,TAXAMT并且SHIPPINGAMT字段,以确保总不变:
[L_AMT0] => 49.99
[L_NUMBER0] => 3706{3}8
[L_QTY0] => 1
[L_TAXAMT0] => 0.00
[ITEMAMT] => 49.99
[TAXAMT] => 0
[SHIPPINGAMT] => 14.95
[AMT] => 64.94
Run Code Online (Sandbox Code Playgroud)
我向Paypal发送了多少折扣?我查看了我能找到的文件,没有运气; 关于SO的类似问题也没有帮助.谢谢.
编辑:我注意到我可以穿过田野SHIPDISCAMT.我不知道这是否会让我做我需要的东西 - 我仍然会收到错误,表明soemthing'不匹配'.
我目前有工作Mod Rewrite Regex:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(.+)) $1?$2=$3&%1 [L]
Run Code Online (Sandbox Code Playgroud)
该正则表达式采用以下URL并将其转换为下面的URL:
www.site.com/cmd1/param/cmd2/param2/stillparam2 把它变成 www.site.com/index.php?cmd1=param&cmd2=param2/stillparam2
这工作正常,但我还想创建另一个负前瞻断言,以确保URL块 - 即一个/texthere/参数 - 不包括下划线.一个无效的字符串可能类似于:www.test.com/cmd/thing/getparam_valuehere; 正则表达式应该将其解析cmd/thing为键和值对,并忽略字符串的其余部分.然后我还会写另一个RewriteRule来将URL的下划线作为另一个URL参数添加到其中.将发生以下URL转换:
www.test.com/cmd/param1/cmd2/directory/param2/sortorder_5
www.test.com?cmd=param1&cmd2=directory/param2&sortorder=5
Run Code Online (Sandbox Code Playgroud)
如果我不够清楚,请告诉我.任何帮助都会很棒.
注意:我已经尝试使用嵌套在已经存在的内容中的负向前瞻(?!(?!))- 并尝试使用|两个负面的前瞻,但两种解决方案都不起作用.我认为也许其他东西更根本错了?
谢谢大家.
编辑:我也尝试了以下 - 我真的认为这会起作用(但很明显,没有!)
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(?![.+]*(?:_)[.+]*)(.+)) $1?$2=$3&%1 [L]
Run Code Online (Sandbox Code Playgroud)
这样做如下:
www.test.com/cmd/param1/sortorder_1/ 翻译成
www.test.com?cmd=param1/sortorder_1/
什么时候应该变成:www.test.com?cmd=param1&sortorder=2/.翻译/sortorder_2/成规则&sortorder=2尚未创建,但你可以希望看到我的意思).
我试图使用PHP gettext扩展来翻译一些字符串.所有函数似乎都返回正确的值,但只调用gettext()/ _()返回原始字符串.PO/MO文件似乎正确,我相信我已正确设置目录.我在Windows上运行带有PHP 5.3.10的WAMP服务器(也尝试运行5.3.4和5.3.8,因为我有安装).
首先,请看/new2/www/index.php:
$locale = 'esn'; # returns Spanish_Spain.1252 in var dump
putenv("LC_ALL={$locale}"); // Returns TRUE
setlocale(LC_ALL, $locale); // Returns 'Spanish_Spain.1252'
$domain = 'messages';
bindtextdomain($domain, './locale'); // Returns C:\wamp\www\new2\www\locale
bind_textdomain_codeset($domain, 'UTF-8'); // Returns UTF-8
textdomain($domain); // Returns'messages'
print gettext("In the dashboard"); // Prints the original text, not the translation.
exit;
Run Code Online (Sandbox Code Playgroud)
我创建了以下文件结构:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
Run Code Online (Sandbox Code Playgroud)
我也曾尝试更换Spanish_Spain.1252有:es_ES,esn,esp,Spanish,和Spanish_Spain.
用于生成MO的PO文件是这样的(仅给出相关条目):
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr …Run Code Online (Sandbox Code Playgroud) 更新:我已经解决了我遇到的问题,但我不知道为什么这个bug会产生堆栈跟踪.堆栈跟踪导致我完全错误的方向.如果有人能够解释这里发生了什么,我会很感激(并且会将你的答案标记为已接受).请注意,我的原始帖子已被删除.
我有以下课程.其中不相关的部分已被删除:
class ClassName {
private string[] _accountTypes = new string[2] {"ECOM", "MOTO"};
private Dictionary<string, string> _settleDueDateDictionary = new Dictionary<string, string>() {
{"0", "Process immediately."},
{"1", "Wait 1 day"},
{"2", "Wait 2 days"},
{"3", "Wait 3 days"},
{"4", "Wait 4 days"},
{"5", "Wait 5 days"},
{"6", "Wait 6 days"},
{"7", "Wait 7 days"},
};
private string _settleDueDate;
private string _accountTypeDescription;
public string SettleDueDate
{
get
{
DateTime today = DateTime.Today;
long settleDueDate = Convert.ToInt64(_settleDueDate);
return today.AddDays(settleDueDate).ToString("MM/dd/yyyy");
}
set
{ …Run Code Online (Sandbox Code Playgroud) 我们的应用程序是使用COPY查询将CSV文件中的数据插入Redshift .它上传c.c总共700 GB.11000个文件.每个文件都映射到一个数据库表.我们SELECT COUNT(*) FROM <table>在每个之前和之后运行COPY日志记录和健全性检查.
经过一段时间(似乎有所不同)调用pg_query()返回此E_NOTICEPHP错误:
pg_query() - "Cannot set connection to blocking mode (Error No. 8)
Run Code Online (Sandbox Code Playgroud)
这是为SELECT COUNT(*) FROM <table>查询返回的; 我们的应用程序将所有PHP错误传播到异常.除去该传播给了我们这个错误信息除了E_NOTICE上述的两个SELECT和COPY:
Failed to run query: server closed the connection unexpectedly
This probably means the server terminated abnormally
Run Code Online (Sandbox Code Playgroud)
该COPY查询肯定不实际插入的文件.
一旦出现,每次尝试插入文件时都会发生此错误.它似乎没有解决自己.
我们最初pg_connect()在脚本开头打开了一个数据库连接(打开),并将其重新用于所有后续的SELECTs和COPYs.当我们得到E_NOTICE上述内容时,我们尝试了 - 就像实验一样 - 为每个查询打开一个新连接.这没有改变.
我们在PHP ini文件中的当前pgsql设置是:
pgsql.allow_persistent = Off
pgsql.auto_reset_persistent …Run Code Online (Sandbox Code Playgroud) 这是一个简单的PHP脚本,可以打开SSL套接字,准备发送HTTP请求:
$contextOptions = array();
$socketUrl = 'ssl://google.com:443';
$streamContext = stream_context_create($contextOptions);
$socket = stream_socket_client($socketUrl, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $streamContext);
if (!$socket || $errno !== 0) {
var_dump($socket, $errstr);
exit;
}
var_dump($socket);
exit('Socket created.');
这工作 - 我刚刚测试了它 - 但是没有针对可信CA存储的验证.
我们可以修改该脚本以使用PHP的SSL Context选项:
$contextOptions = array(
'ssl' => array(
'cafile' => 'C:\xampp\cacerts.pem',
'CN_match' => '*.google.com', // CN_match will only be checked if 'verify_peer' is set to TRUE. See https://bugs.php.net/bug.php?id=47030.
'verify_peer' => TRUE,
)
);
$socketUrl = 'ssl://google.com:443';
$streamContext = stream_context_create($contextOptions);
$socket = … 我正在尝试为Magento编写自定义支付网关.该模块在管理后端(系统 - 配置 - 付款方式)中被识别,但是当到达前端的"付款信息"时,不会出现选择模块的选项.
下面包含我创建的三个XML文件以及它们所在的目录.
任何帮助将非常感激.谢谢.
根/应用程序的/ etc /模块/ Namespace_Module
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Module>
<active>true</active>
<codePool>local</codePool>
</Namespace_Module>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
根/应用程序/代码/本地//命名空间/模块的/ etc/config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Module>
<version>0.1.0</version>
</Namespace_Module>
</modules>
<global>
<models>
<alias>
<class>Namespace_Module_Model</class>
</alias>
</models>
<resources>
<alias_setup>
<setup>
<module>Namespace_Module</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</alias_setup>
<alias_write>
<connection>
<use>core_write</use>
</connection>
</alias_write>
<alias_read>
<connection>
<use>core_read</use>
</connection>
</alias_read>
</resources>
</global>
Run Code Online (Sandbox Code Playgroud)
根/应用程序/代码/本地//命名空间/模块的/ etc /的system.xml
<?xml version="1.0"?>
<config>
<sections>
<payment>
<groups>
<alias translate="label">
<label>Module</label>
<frontend_type>text</frontend_type>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<active translate="label">
<label>Enabled: </label> …Run Code Online (Sandbox Code Playgroud) 我计划允许用户通过PHP用户界面生成.POT文件/ .PO文件,作为CMS解决方案的一部分.一旦生成了这些文件(简单的位),我想允许我的系统自动将这些文件转换为.MO文件以响应用户(POST)请求.
我在SO上看到了以下问题:
我知道我可以msgfmt使用PHP的exec()功能运行,但这似乎只是一个Linux解决方案,如果我是正确的?我如何在其他操作系统上执行此操作? 如果有人愿意展示,那么在实践中如何做到这一点的一些示例代码也将非常有用.这与我通常做的工作完全不同!
这只是目前的概念,但我希望我走的是正确的路线.如果您对此方法有任何其他想法/建议,我会很高兴听到它们.背景信息如下.
其他背景资料 - 不需要:
我正在通过解析简单的模板文件来检索原始的英文文本,这些文件只包含基本的HTML和调用<?php _('the gettext method'); ?>.编辑/保存时会解析这些模板并检索语言条目.然后将生成.POT文件.用户现在必须手动编辑翻译(通过简单的界面,而不是直接编辑)来更新/准备所有.PO文件.完成后,我需要能够将它们转换为.MO文件,这是我的问题的标题.
作为一名新的Perl工程师通过'Programming Perl'工作,我遇到了以下正则表达式:
/^(.*?): (.*)$/;
Run Code Online (Sandbox Code Playgroud)
此正则表达式旨在解析电子邮件标头并将其插入哈希.电子邮件标头包含在单独的.txt文件中,格式如下:
From: person@site.com
To: email@site.com
Date: Mon, 1st Jan 2000 09:00:00 -1000
Subject: Subject here
Run Code Online (Sandbox Code Playgroud)
我用来处理这个示例正则表达式的整个代码如下:
use warnings;
use strict;
my %fields = ();
open(FILE, 'header.txt') or die('Could not open.');
while(<FILE>)
{
/^(.*?): (.*)$/;
$fields{$1} = $2;
}
foreach(%fields)
{
print;
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
现在,谈谈我的问题.我不确定为什么第一个子模式被修改为使用最小量词.这可能是一个小问题,但我不明白为什么它已经完成.
谢谢你的回复.
php ×6
regex ×3
windows ×3
gettext ×2
linux ×2
payment ×2
perl ×2
translation ×2
apache ×1
asp.net ×1
c# ×1
database ×1
e-commerce ×1
magento ×1
mod-rewrite ×1
modifier ×1
paypal ×1
poedit ×1
postgresql ×1
quantifiers ×1
setter ×1
ssl ×1