我正在尝试使用preg_match解析youtube网址的视频ID.我在这个网站上找到了一个似乎有效的正则表达式;
(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
Run Code Online (Sandbox Code Playgroud)
如图所示:
我的PHP如下,但它不起作用(给出未知修饰符'['错误)...
<?
$subject = "http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1";
preg_match("(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+", $subject, $matches);
print "<pre>";
print_r($matches);
print "</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
干杯
摘要
我想创建一个未保存到产品的产品属性,或者像普通产品属性一样显示在产品编辑页面上.相反,我希望它保存到订单/报价项目并显示在订单,发票等.在将产品添加到购物车之前,它还应该由前端的客户配置.
细节
我的问题
<input>
当产品添加到购物车时,以及稍后在结账过程中,如何验证并最终将前端产品页面上的值保存到报价项目中?更新1
我发现我可以在诸如此类的事件中在catalog/product
模型上运行此代码(并且可能sales/quote_item
也是如此)sales_quote_item_qty_set_after
$infoBuyRequest = $product->getCustomOption('info_buyRequest');
$buyRequest = new Varien_Object(unserialize($infoBuyRequest->getValue()));
$myData = $buyRequest->getMyData();
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我能够从<input>
产品页面上检索我的自定义客户提供的数据.
我怀疑这info_buyRequest
是与报价和订单项目一起保存的.如果是这样,这部分解决了我的问题1和2.但是,我仍然不知道在哪里运行此代码是合适的,我不知道如何在后端订单/报价/报告页面上显示它.另外我相信,因为它作为序列化值存储在数据库中,根据我的自定义数据获取报价/订单项集合将是最困难的.
有时Chrome不允许您访问某些网站并丢失证书/ HSTS错误.我发现在Chrome窗口中输入badidea
(最近thisisunsafe
)会告诉Chrome跳过证书验证.
此解决方案是否仅适用于特定网站,或者在我使用此关键字后Chrome会忽略所有网站的证书/ HSTS错误?
我刚收到一个错误.
当我尝试分配这样的对象时:
$obj_md = new MDB2();
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"不推荐使用引用分配新值的返回值".实际上我一直在寻找一个解决方案,但我见过的唯一一个就是拒绝php.ini(error_reporting)的政治.我也尝试过,但它没有用.
这太令人困惑了......我希望你能帮助我.提前致谢.
好吧,这可能是一个非常noob的问题,但我发现PHP文档和几个Internet搜索没有给我任何想法.
我什么时候应该使用try-catch块来改善我的应用程序?
我读过有人说我们应该只使用try-catch块来防止致命错误.我读到其他人说我们应该只在意外错误上使用它(等待什么?意外?如果它们是意外错误我怎么能用try-catch阻止它们?我应该把所有应用程序代码放在try块中吗?).其他人只是说try-catch块应该在任何地方使用,因为它们也可以扩展(扩展Exception类).最后有人说PHP try-catch块完全没用,因为它们实现得非常糟糕.(在此我发现了一个关于性能的好问题).
在我看来,这个话题非常奇怪和困惑.有人会点亮我吗?
我在一些框架中看到了这行代码:
return new static($view, $data);
Run Code Online (Sandbox Code Playgroud)
你怎么理解的new static
?
我正在寻找一个内置的PHP函数,它将数组键作为输入并返回相应的值.
例如,我有一个以下数组
$arr = array("key1"=>100, "key2"=>200, "key3"=>300, 'key4'=>400);
Run Code Online (Sandbox Code Playgroud)
我需要键key2和key4的值,所以我有另一个array("key2", "key4")
我需要一个函数,它将这个数组和第一个数组作为输入,并在响应中提供值.所以回应将是array(200, 400)
在使用PHP的DOM类(DOMNode,DOMEElement等)时,我注意到它们拥有真正的只读属性.例如,我可以读取DOMNode的$ nodeName属性,但我无法写入它(如果我做PHP抛出致命错误).
如何在PHP中创建自己的只读属性?
简介:
有没有办法强制PHP内置的SoapClient类通过HTTPS连接到具有无效证书的服务器?
我为什么要那样做?
我在没有DNS条目或证书的服务器上部署了一个新的应用程序.我想在设置DNS条目和修复证书之前尝试使用SoapClient连接它,最合理的方法是让客户端在测试期间忽略证书.
我不是意识到这是一个巨大的安全隐患吗?
这仅用于测试.当服务投入生产时,将会有一个有效的证书,客户端将被强制验证它.
我希望用户能够下载我服务器上的一些文件,但是当我尝试使用互联网上的任何一个这样的例子时,似乎没有什么对我有用.我尝试过这样的代码:
<?php
$size = filesize("Image.png");
header('Content-Description: File Transfer');
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile("Image.png");
Run Code Online (Sandbox Code Playgroud)
我甚至试图使用我能找到的最基本的例子,如下所示:
<?php
header('Content-type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
readfile('Image.png');
Run Code Online (Sandbox Code Playgroud)
当我测试了这个时,我已经删除了所有其他代码,并使用了一个空文件,仅使用此代码来删除外部源创建的任何错误.
当我在控制台中查看时,文件会以正确的标题发送,即
'Content-Disposition: attachment; filename="Image.png"'
Run Code Online (Sandbox Code Playgroud)
但是不显示保存对话框.
我也尝试使用inline而不是内容处理标题中的附件,但这也没有什么区别,我已经在Firefox 8.0.1 Chrome 15.0.874.121和Safari 5.1.1中测试过了.
php ×9
ssl ×2
arrays ×1
certificate ×1
http-headers ×1
https ×1
magento ×1
parsing ×1
php-5.2 ×1
regex ×1
security ×1
soap ×1
soap-client ×1
try-catch ×1
youtube ×1