这是我的代码:
$long = str_repeat('a very long string text', 100); // try changing 100 to 5000
$str = <<<STR
<abc>a short string text</abc>
<abc>$long</abc>
STR;
preg_match_all('@<abc>([^<>]+)</abc>@sU', $str, $matched);
print_r($matched);
Run Code Online (Sandbox Code Playgroud)
并且它完全按预期工作。但是,将100次重复更改为5000次后,运行
print_r($matched);
Run Code Online (Sandbox Code Playgroud)
而且您只会得到短字符串出现的结果。
我的问题是如何使preg_match或preg_match_all与大型字符串文本(最大1MB或更大)一起使用?
有没有办法让Magento设置中的Product URL Suffix用于我想要使用它的模板中?我找到了这个doc页面:http://docs.magentocommerce.com/Mage_Catalog/Mage_Catalog_Helper_Product.html
并找到了这个方法:getProductUrlSuffix
但我不知道如何使用它.
我正在尝试使用preg_match_all()解析一些网页,其中一些网页的大小相当于几个MB.其中一个正则表达式匹配一些文本字符串,这些字符串非常大,以至于它们似乎无法匹配并获取它们.它只返回一个空字符串.
当我手动选择它并将其保存为.txt文件时,其中一个字符串是1.32MB或1,393,557字节.
当字符串短得多,只有几万个字节时,该正则表达式成功匹配并获取它.
所以我的问题是,因为我发现字符串的限制/最大长度preg_match_all()可以匹配,它是什么以及如何将其设置得更大?
我写了一个下载计数器:
$hit_count = @file_get_contents('download.txt');
$hit_count++;
@file_put_contents('download.txt', $hit_count);
header('Location: file/xxx.zip');
Run Code Online (Sandbox Code Playgroud)
就如此容易.问题是统计数字被截断为4位数,因此没有显示实际计数:
http://www.converthub.com/batch-image-converter/download.txt
批量图像转换器程序每天下载几百次,PHP计数器已经存在数月.我第一次发现这个问题的时间大约是2个月之前,当我很高兴它在几周之后达到8000大关,而在此之后的一周,它再次达到了500.它一次又一次地发生.
不知道为什么.为什么?
在Magento内部模板代码我想获得原始产品图像的宽度和高度(在创建产品时由管理员上传),以便进行相应的调整.
我怎样才能做到这一点?到目前为止,我有:
$this->helper('catalog/image')->init($_product, 'image')
Run Code Online (Sandbox Code Playgroud)
这是否有任何方法可以让我检索产品图像的原始尺寸?如:
$this->helper('catalog/image')->init($_product, 'image')->getWidth()
Run Code Online (Sandbox Code Playgroud)
或者其他的东西?
谢谢!
目前我在.htaccess中将*.html的所有传入请求重写为*.php:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteRule ^(.*).html$ $1.php [QSA]
ErrorDocument 404 /404.html
Run Code Online (Sandbox Code Playgroud)
所以/something.html被重写为/something.php.
但是,/ something.php仍然可以在浏览器中直接访问.现在,当人们在浏览器中访问它时,我希望它重定向到/something.html,以避免同一页面内容的2个不同的URL.
这可以在我的.htaccess中做到吗?怎么样?我试过R = 301,但它总是一个重定向循环或其他东西.任何帮助,将不胜感激.谢谢!
PHP中是否有任何方法可以调用对象,就像它是一个函数一样?
class Funct {
public function __callSelf() {
echo 'Called!';
}
}
$myFunc = new Funct();
$myFunc();
// Output
Called!
Run Code Online (Sandbox Code Playgroud)
像这样的东西?
当timestamp列定义为DEFAULT 0,如果未在INSERT或UPDATE中指定,则"0000-00-00 00:00:00"成为默认值.
检查这样的时间戳是否设置的正确方法是什么,因此不是默认值?
SELECT * FROM table WHERE timestamp <> 0
Run Code Online (Sandbox Code Playgroud)
它似乎确实有效,但我不确定它是否是正确的方式并且100%的情况下工作?
当在PHP中选择此类值时,如何检查它是否已设置?
到目前为止,我提出了这样的事情:
if ($row['timestamp'] != '0000-00-00 00:00:00') {
}
Run Code Online (Sandbox Code Playgroud)
它确实有效,但对我来说似乎很俗气.我不确定它是否也是正确的方式.我该怎么做呢?
我很擅长这个.当我认为一个好的教程会做得更好时,试图理解PHP.net上mcrypt的手册页.所以我没有任何实质性的搜索.
我还尝试了使用mcrypt使用2个函数执行加密和解密的一个示例,但它给出了"密钥大小对于此算法来说太大"的警告.
任何人都可以请我写一个双向类来使用mcrypt进行加密/解密,这样我就可以理解库了吗?谢谢!
我可以看到media.phtml(使用Cloud Zoom扩展)如何通过$ this-> getGalleryImages()的帮助列出产品页面上的所有图像:
<?php foreach ($this->getGalleryImages() as $_image): ?>
<?php ... ?>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
但是当我在view.phtml中使用$ this-> getGalleryImages()时,它是目录产品页面模板,它不会返回或输出任何内容.但是,这只会打印产品页面上的第一个图像:
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'image')->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->setWatermarkImageOpacity(0)->resize(300, null);?>" alt="<?php echo $this->htmlEscape($this->getImageLabel());?>" title="<?php echo $this->htmlEscape($this->getImageLabel());?>" />
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在产品页面(view.phtml,而不是media.phtml)上迭代并显示所有产品图像?基本上,我希望它们全部显示在页面上,无需缩略图或缩放或任何东西,只是一个接一个的普通大图像.
谢谢!