我有一个PHP文件在位置/var/www/html/siteroot/app/code/community/Company/Module/Block/Module/File.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语法不会中断?
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