我在位置/var/www/html/siteroot/app/code/community/Company/Module/Block/Module/File.php
处有一个PHP文件。
此文件包含我需要替换的以下代码:
$this->getUploader()->getConfig()
->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'))
->setFileField('image')
->setFilters(array(
'images' => array(
'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
)
));
使用以下代码:
$url = Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image');
if (class_exists("Mage_Uploader_Block_Abstract")) {
// PATCH SUPEE-8788 or Magento 1.9.3
$this->getUploader()->getUploaderConfig()
->setFileParameterName('image')
->setTarget($url);
$browseConfig = $this->getUploader()->getButtonConfig();
$browseConfig->setAttributes(
array("accept" => $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg'))
);
} else {
$this->getUploader()->getConfig()
->setUrl($url)
->setFileField('image')
->setFilters(array(
'images' => array(
'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
)
));
}
如何通过bash脚本维护和转义字符来实现这一点,以便PHP语法不会中断?
答案 0 :(得分:0)
Bash没有可靠的多线匹配工具。你可以使用perl。
#!/usr/bin/perl
$OLD= <<'EOF';
$this->getUploader()->getConfig()
->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'))
->setFileField('image')
->setFilters(array(
'images' => array(
'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
)
));
EOF
$NEW= <<'EOF';
$url = Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image');
if (class_exists("Mage_Uploader_Block_Abstract")) {
// PATCH SUPEE-8788 or Magento 1.9.3
$this->getUploader()->getUploaderConfig()
->setFileParameterName('image')
->setTarget($url);
$browseConfig = $this->getUploader()->getButtonConfig();
$browseConfig->setAttributes(
array("accept" => $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg'))
);
} else {
$this->getUploader()->getConfig()
->setUrl($url)
->setFileField('image')
->setFilters(array(
'images' => array(
'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
)
));
}
EOF
undef $/;
while (<>) {
s%\Q$OLD%$NEW%m;
print;
}
该脚本不是太干净或安全,但它可以满足您的需求。像perl script.pl file.php > newfile.php