Am 10.05.2013 01:52, schrieb David Beveridge: >> [egreshko@meimei try]$ find /tmp/try -type f -name \*.php -exec grep -l -i -n -G "<?$" '{}' \; >> /tmp/try/one.php >> >> The only thing worse than a poorly asked question is a cryptic answer. >> > So you want all the <? but not the <?php, <?xml, <?= in text files? > > grep -r "<?" * | grep -v "Binary file" | grep -v "<\?php" | grep -v > "<\?xml" | grep -v "<\?=" i finally solved it with a php-script itself using a years ago written PHP-SPL-wrapper for recursive listing of files started in the dir the php-cli-script is living relevant is <? followed by space, LF, CR, TAB to catch also files with windows or OSX line-breaks you must not list here files containing value="<?=(int)$id?>" because this short echo-variant is starting with PHP 5.4 always supported and no longer in context with "short_open_tag" from php.ini well, i found 7 files out of some thousand written in the last 10 years :-) script and 3 test-files below __________________________________________________________________________________ #!/usr/bin/php <?php if(PHP_SAPI != 'cli') { exit('Forbidden'); } require('global.inc.php'); $fs = new rh_filesystem(); $liste = $fs->ListFilesRecursive(/**$path*/__DIR__, /**$details*/false, /**$excludes*/array()); foreach($liste as $file) { if($file != __FILE__ && strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'php' && is_readable($file)) { $content = file_get_contents($file); if(strpos($content, '<? ') !== false || strpos($content, "<?\r") !== false || strpos($content, "<?\n") !== false || strpos($content, "<?\t") !== false) { echo $file . MY_LE; flush(); } } } ?> __________________________________________________________________________________ $fs->ListFilesRecursive() is basically this: $spl_objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); try { foreach($spl_objects as $filename=>$spl_object) { if(!$spl_object->isDir()) { if(DIRECTORY_SEPARATOR === "\\") { $filename = str_replace(DIRECTORY_SEPARATOR, '/', $filename); } if(substr($filename, 0, 2) === './') { $filename = substr($filename, 2); } if(empty($pattern) || !preg_match($pattern, $filename)) { if(!$ignore_svn || strpos($filename, '/.svn') === false) { $enumerate_list[] = $filename; } } } } } catch(UnexpectedValueException $e) { error_log('Directory "' . $path . '" contained a directory we can not recurse into'); return false; } sort($enumerate_list); __________________________________________________________________________________ [harry@srv-rhsoft:/www]$ cat test-short-open-1.php <? echo 'TEST'; ?> __________________________________________________________________________________ [harry@srv-rhsoft:/www]$ cat test-short-open-2.php <?php echo 'TEST'; ?> <form action="<? echo "TEST"?>"></form> __________________________________________________________________________________ [harry@srv-rhsoft:/www]$ cat test-short-open-3.php <? echo 'TEST'; ?> <td> <? echo 'TEST'; ?> </td> __________________________________________________________________________________
Attachment:
signature.asc
Description: OpenPGP digital signature
-- users mailing list users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe or change subscription options: https://admin.fedoraproject.org/mailman/listinfo/users Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines Have a question? Ask away: http://ask.fedoraproject.org