Sed将替换<;?使用<;?php
我有一些非常旧的代码(PHP5.1),需要在更新的服务器上运行 新服务器有PHP5.6,所以Sed将替换<;?使用<;?php,php,regex,sed,Php,Regex,Sed,我有一些非常旧的代码(PHP5.1),需要在更新的服务器上运行 新服务器有PHP5.6,所以 <? 您可以执行以下操作: sed 's/<?\(php\)*/<?php/g' file sed's/bluh'; $result=''; foreach(token\u get\u all($str)作为$tok){ $result.=($tok[0]==376)?“你可以试试这个 正则表达式: ^<\?([^p\=])/gm ^[^php]不匹配任何不等于php
<?
您可以执行以下操作:
sed 's/<?\(php\)*/<?php/g' file
sed's/bluh';
$result='';
foreach(token\u get\u all($str)作为$tok){
$result.=($tok[0]==376)?“你可以试试这个
正则表达式:
^<\?([^p\=])/gm
^[^php]
不匹配任何不等于php
的文本,它只匹配p
或h
的1个字符。嗯,你不能用sed正则表达式可靠地做到这一点,因为它不支持lookarounds。正确的正则表达式应该是这样的我不知道它不支持负lookarounds。看起来像我必须用Python编写这个脚本……谢谢,先生们。@abracadver:from php手册:“5.4.0我不知道SED的标记,但是为什么不替换,因为那里有时有空白,有时没有。@abracadver:使用[:blank:]是个好主意。”
取代了\s
,但我不记得
是否被允许。我喜欢“得到所有我不知道的东西”这个标记!而
变成了
这几乎对我有效。我正试图在一个巨大的文件夹中运行此脚本,在这两种情况下它们都不起作用,我还将er改为^
<?
<?php
cat file.php | sed -i 's/<?([^php])/<?php\$1/g'
<?=$_COOKIE...
<?php=$_COOKIE...
sed 's/<?\(php\)*/<?php/g' file
sed 's/<?\([[:space:]]\)/<?php\1/g' file
echo 'abc <? def';
echo 'abc <?php def';
$str = 'echo "blah"; <? echo "sblub"; ?> bluh';
$result = '';
foreach(token_get_all($str) as $tok) {
$result .= ($tok[0] == 376) ? '<?php' : $tok[1];
}
echo $result;
^<\?([^p\=])/gm
<?php$1