Так не стояло задачи субдиры окучивать. Давайте немного доработаем:
$Path = '/mypath/'; // Это путь до директории $Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание $From = 'a'; // Что заменять $To = 'b'; // На что заменять StrReplaceInDir($Path, $Mask, $From, $To); function StrReplaceInDir($Path, $Mask, $From, $To) { $Files = scandir($Path); foreach($Files as $FileName) { $File = $Path.$FileName; if (is_dir($File) and $FileName != '.' and $FileName != '..') { StrReplaceInDir($File.'/', $Mask, $From, $To); } elseif (!strpos($FileName, $Mask) === false) { $Content = file_get_contents($File); $Content = str_replace($From, $To, $Content); file_put_contents($File, $Content); } } }
Что касается прав, разумеется, если юзер, под которым запускается php (или httpd, если Вы через него запускаете), не имеет прав на запись в целевые файлы, ничего не выйдет.
С CMS, вроде WP, не работаю. Но, предположив, что сам "плагин" лежит в wp-content/plugins/, видимо, можно его дёрнуть и использовать в приведённом коде:
//Добавление записей в WordPress при помощи PHPrequire_once('wp-config.php');require_once('wp-content/plugins/rus-to-lat.php'); // Мне кажется, тут он должен быть...// подключить файл, "загружающий" WordPress//include($pathToWordpress.'/'.'wp-blog-header.php');// указать параметры// статус поста - "опубликован"$post_array = array('post_status' => 'publish',// автор - админ (пользователь с id = 1) 'post_author' => 1,// заголовок поста 'post_title' => 'my_title',// текст поста 'post_content' => 'text',// название поста 'post_name' => 'pub_title',// теги 'tags_input' => sanitize_title_with_translit('tag1, tag2, tag3'),// категории 'post_category' => array(11, 7));// добавление записи в блогecho wp_insert_post($post_array);
Не проверял. За последствия не ручаюсь. В случае, если такое решение не пройдёт, проще всего будет просто добавить свою функцию конверта в транслит.
Делаем примерно так:
$Path = '/mypath/'; // Это путь до директории$Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание$From = 'a'; // Что заменять$To = 'b'; // На что заменять$Files = scandir($Path);foreach($Files as $FileName) { if (!strpos($FileName, $Mask) === false) { $Content = file_get_contents($Path.$FileName); $Content = str_replace($From, $To, $Content); file_put_contents($Path.$FileName, $Content); }}
Вот, собственно, и всё. Должно работать :)
Необходимая Вам функция выглядит примерно так:
function link_to_array($content){ preg_match_all ('|<a.* href=.*>.*</a>|U', $content, $links); return $links[0]; }
В .htaccess пишем:
RewriteEngine on RewriteCond %{QUERY_STRING} ^$ RewriteRule ^$ main.htm [L]
Order Allow,Deny Allow from all Deny from .opera-mini.net
slipknotweb, для того, чтобы запретить доступ определённым хостам через .htaccess, пишем вот так:
Order Allow,DenyAllow from allDeny from host1Deny from host2
Это далеко не самый эффективный и правильный способ борьбы со спамом на форумах.
ТС, ни один из приведённых Вами примеров не может работать при register_globals=off ! Покажите, пожалуйста, именно phpinfo(). Желательно, уже после include("./admin/config.php");
Если Вы мне покажите такой же код, нормально работающий на хосте с register_globals=off, я уйду в монастырь :)
Wistis, это уже проблема N2. Как заметил уважаемый pistol, приведённый Вами (г)код ориентирован на работу с register_globals=on, который, в большинстве случаев, off. Код необходимо править.