| 04.04.2011, 12:34 | iloveadult | Есть ли какой-нибудь плагин, чтобы автоматом заменял указаный текст на указаную ссылку в статьях?
Статьи публикуются автоматом. Т.е. если в тексте есть виагра, что должно заменить на ссылку |
| 04.04.2011, 15:55 | Bara | Terms Descriptions
вот такой поищи плагин |
| 04.04.2011, 16:31 | chesser | попробуй кинуть такой файлик в плагины wp-content/plugins/:
<?php
/*
Plugin Name: Chesser Relpace
Description: Find and replace substrings
Author: Chesser
Version: 1.0
Author URI: http://chesser.ru/blog/
*/
function func_replace($content) {
return str_replace(
array(
'vasya',
'masha',
),
array(
'petya',
'dasha',
),
$content
);
}
add_filter('the_content', 'func_replace');
?>
вроде должно работать, хотя не проверял
можно вместо "vasya заменить на petya" прикрутить визуальную настройку таблицы автозамен, но я пошел спать :)
str_replace можно заменить на str_ireplace - тогда будет заменять без учета регистра.
При работе с юникодом однобайтавая функция замены не катит, надо что-то из mb_string использовать |
| 04.04.2011, 16:37 | majordon | Т.е. если в тексте есть виагра, что должно заменить на ссылку
Terms Descriptions если нужно слово сделать гиперссылкой, если просто слово заменить ссылкой то увы плагин не поможет |
| 04.04.2011, 17:02 | iloveadult | попробуй кинуть такой файлик в плагины wp-content/plugins/:
<?php
/*
Plugin Name: Chesser Relpace
Description: Find and replace substrings
Author: Chesser
Version: 1.0
Author URI: http://chesser.ru/blog/
*/
function func_replace($content) {
return str_replace(
array(
'vasya',
'masha',
),
array(
'petya',
'dasha',
),
$content
);
}
add_filter('the_content', 'func_replace');
?>
вроде должно работать, хотя не проверял
можно вместо "vasya заменить на petya" прикрутить визуальную настройку таблицы автозамен, но я пошел спать :)
str_replace можно заменить на str_ireplace - тогда будет заменять без учета регистра.
При работе с юникодом однобайтавая функция замены не катит, надо что-то из mb_string использовать
красота, работает! Спасибо |
| 04.04.2011, 17:27 | iloveadult | только одна проблемка пока вроде:
если добавить:
спасибо
большое спасибо
g.com
y.com
то заменяет не правильно второе:
большое y.com получается |
| 04.04.2011, 17:35 | Sezeo8 | только одна проблемка пока вроде:
если добавить:
спасибо
большое спасибо
g.com
y.com
то заменяет не правильно второе:
большое y.com получается
поменяй местами "большое спасибо" с "спасибо" |
| 04.04.2011, 17:43 | iloveadult | нет, так не катит, замены то не 2. добавил 10 штук, слова иногда пересекаются. надо чтоб каждое слово воспринималось отдельно и полностью |
| 04.04.2011, 17:56 | Sezeo8 | так ты сделай по убыванию от много словных ключевых к одиночным, будет работать, я так делал |
| 04.04.2011, 17:58 | iloveadult | ну ща попробую, но ещё нашел баг:
гофак
меняем на URL="http://gofuckbiz.info/"]гофак forum[/URL]
получаем:
URL="http://gofuckbiz.info/"]URL="http://gofuckbiz.info/"]гофак forum[/URL] forum[/URL]
тоже самое, только в html кароче
upd поменял местами получилось ещё хуже))
кодеры, подкскажите плиз, что дописать, чтоб воспринималось полностью фраза в кавычках отдельно |
| 04.04.2011, 20:30 | incognito | вот попробуй мой г.код:
<?php
function func_replace($content) {
$search_replace = "THANKS{-}thanks{;}BIG THANKS{-}big thanks{;}VERY BIG THANKS{-}very big thanks";
#или из файла:
//$search_replace = file_get_contents('searchreplace.txt');
$content = strip_tags($content); //удалить все теги
$sr_arr_tmp = explode('{;}',$search_replace);
foreach ($sr_arr_tmp as $value_sr){
$sr_para_tmp = explode('{-}',$value_sr);
$sr_para[$sr_para_tmp[0]] = $sr_para_tmp[1];
$search_long[$sr_para_tmp[0]] = strlen($sr_para_tmp[0]);
}
arsort($search_long,SORT_NUMERIC);
foreach ($search_long as $key_sl=>$value_sl){
$search_arr[] = $key_sl;
$replace_arr[] = $sr_para[$key_sl];
}
return str_replace($search_arr,$replace_arr,$content);
}
add_filter('the_content', 'func_replace');
?>
По идее должно работать так:
- Удалит все теги("img" тоже).
- Расставит массив "что ищем" по уменьшению кол-ва символов.
- Заменит все.
пс Работает ли ХЗ. :pardon: |
| 04.04.2011, 20:52 | href | search-regex плагин - поиск и замена по регуляркам, можно проверить перед заменой что найдется и на что заменится |
| 04.04.2011, 20:59 | sspy | Есть ли какой-нибудь плагин, чтобы автоматом заменял указаный текст на указаную ссылку в статьях?
Статьи публикуются автоматом. Т.е. если в тексте есть виагра, что должно заменить на ссылку
плагин Internal Link Building |
| 05.04.2011, 15:28 | iloveadult | вот попробуй мой г.код:
<?php
function func_replace($content) {
$search_replace = "THANKS{-}thanks{;}BIG THANKS{-}big thanks{;}VERY BIG THANKS{-}very big thanks";
#или из файла:
//$search_replace = file_get_contents('searchreplace.txt');
$content = strip_tags($content); //удалить все теги
$sr_arr_tmp = explode('{;}',$search_replace);
foreach ($sr_arr_tmp as $value_sr){
$sr_para_tmp = explode('{-}',$value_sr);
$sr_para[$sr_para_tmp[0]] = $sr_para_tmp[1];
$search_long[$sr_para_tmp[0]] = strlen($sr_para_tmp[0]);
}
arsort($search_long,SORT_NUMERIC);
foreach ($search_long as $key_sl=>$value_sl){
$search_arr[] = $key_sl;
$replace_arr[] = $sr_para[$key_sl];
}
return str_replace($search_arr,$replace_arr,$content);
}
add_filter('the_content', 'func_replace');
?>
По идее должно работать так:
- Удалит все теги("img" тоже).
- Расставит массив "что ищем" по уменьшению кол-ва символов.
- Заменит все.
пс Работает ли ХЗ. :pardon:
странно, залил в папку плагинов, а админка не видит его(
плагин Internal Link Building
блог бурж, кодировка ���������� ))) в плагине не нашел кодировку вообще |
| 05.04.2011, 15:30 | oso | странно, залил в папку плагинов, а админка не видит его(
Надо добавить название плагина, наверно.
/*
Plugin Name:
Description:
Author:
Version:
Author URI:
*/ |
| 05.04.2011, 15:36 | iloveadult | Надо добавить название плагина, наверно.
/*
Plugin Name:
Description:
Author:
Version:
Author URI:
*/
похоже да, но:
Parse error: syntax error, unexpected T_STRING in ..../wp-content/plugins/auto-auto.php on line 11 |
| 05.04.2011, 15:46 | oso | <?php
/*
Plugin Name: replace plugin
Description: This is replace text plugin
Version: 1.0
*/
function func_replace($content) {
$search_replace = "THANKS{-}thanks{;}BIG THANKS{-}big thanks{;}VERY BIG THANKS{-}very big thanks";
#или из файла:
//$search_replace = file_get_contents('searchreplace.txt');
$content = strip_tags($content); //удалить все теги
$sr_arr_tmp = explode('{;}',$search_replace);
foreach ($sr_arr_tmp as $value_sr){
$sr_para_tmp = explode('{-}',$value_sr);
$sr_para[$sr_para_tmp[0]] = $sr_para_tmp[1];
$search_long[$sr_para_tmp[0]] = strlen($sr_para_tmp[0]);
}
arsort($search_long,SORT_NUMERIC);
foreach ($search_long as $key_sl=>$value_sl){
$search_arr[] = $key_sl;
$replace_arr[] = $sr_para[$key_sl];
}
return str_replace($search_arr,$replace_arr,$content);
}
add_filter('the_content', 'func_replace');
?> |
| 05.04.2011, 15:52 | iloveadult | а бля...
кароче и тот наверно работал, дело в том, что вставляются ссылки, т.е.:
THANKS{-}<a href="http://xyipizda.com/">cheap xyipizda</a>{;}
и оно жалуется, с текстом вроде пашет, только опять, кодировка не верная |
| 05.04.2011, 16:56 | iloveadult | search-regex опять-таки не пашет если слова повторяются :(
ну и кроме этого ваще не удобный для автомат работы + в новом не заменяет. |
| 05.04.2011, 16:56 | chesser | а чем мой вариант не подошел уж?
только что попробовал со ссылками:
function func_replace($content) {
return str_replace(
array(
'buy cheap',
'Cialis online',
),
array(
'<a href="http://chesser.ru/buy-cheap">buy cheap</a>',
'<a href="http://chesser.ru/Cialis online">Cialis online</a>',
),
$content
);
}
вот результат: http://chesser.ru/blog/services/copywriting/
см "Пример выполненного заказа"
ps: важен порядок search-подстрок и строк-замен
в первом столбце перечислены строки, которые ищем
во-втором - на что меняем, т.е. первый элемент первого столбца меняется на первый элемент второго столбца, второй на второй и тд. |
| 05.04.2011, 16:58 | iloveadult | Только что отписал тебе в личку)
твой вариант хороший, но (http://gofuckbiz.info/showpost.php?p=464223&postcount=10), вот поправить бы эту хрень было б круто |
| 05.04.2011, 18:03 | chesser | iloveadult, в моем скрипте нужна правильная ручная расстановка/сортировка кеев, которые ищешь и на которые меняешь. Сначало сортируем все кей, которые ты ищешь по длине, начиная от длинного к короткому
function func_replace($content) {
return str_replace(
array(
'gofuck forum',
'forum',
),
array(
'<a href="http://gofuckbiz.info">gofuck forum</a>',
'<a href="http://gofuckbiz.com">forum</a>',
),
$content
);
}
далее, находим те кеи, такие как forum - те которые попали и в замененные и в заменяемые, и добавляем снизу так:
function func_replace($content) {
return str_replace(
array(
'gofuck forum',
'forum',
'jdhgfuiredguidnfuig',
),
array(
'<a href="http://gofuckbiz.info">gofuck jdhgfuiredguidnfuig</a>',
'<a href="http://gofuckbiz.com">forum</a>',
'forum'
),
$content
);
}
jdhgfuiredguidnfuig - это любая уникальная последовательность, которой нет в тексте
по идеи это все можно сделать на автомате |
| 05.04.2011, 18:26 | iloveadult | спасибо, ща попробую разобратся) |
| 05.04.2011, 18:28 | chesser | во, набросал автомат, теперь порядок строк в заменах не важен:
function func_replace($content) {
$replace = array(
'gofuck forum' => '<a href="http://gofuckbiz.info">gofuck forum</a>',
'forum' => '<a href="http://gofuckbiz.com">forum</a>',
'gofuck forum link' => '<a href="http://gofuckbiz.info">gofuck forum link</a>',
);
function cmp($a, $b) {
$a = strlen($a);
$b = strlen($b);
if ($a == $b) return 0;
return ($a < $b) ? 1 : -1;
}
uksort($replace, 'cmp');
$replace_after = array();
$tmp = $replace;
array_shift($tmp);
foreach($replace as $k=>$v) {
foreach($tmp as $kk=>$vv)
if(strpos($v, $kk) !== false) {
$md5_kk = md5($kk) . 'gofuck';
$replace[$k] = str_replace($kk, $md5_kk, $v);
$replace_after[$md5_kk] = $kk;
}
array_shift($tmp);
}
$content = str_replace(array_keys($replace), array_values($replace), $content);
$content = str_replace(array_keys($replace_after), array_values($replace_after), $content);
return $content;
}
ps два раза проверил - вроде работает |
| 05.04.2011, 19:03 | iloveadult | блин, а у меня ваще ниодной замены не сделало |
| 05.04.2011, 20:24 | balamutik | Не хочу новую тему создавать,на пирожке когда ставишь ссылки,вокруг них автоматом появляется <noindex> это что такое в вордпрессе и можно ли убрать? Гугл ваще понимает <noindex> или это ток для яндекса?) |
| 05.04.2011, 22:03 | chesser | блин, а у меня ваще ниодной замены не сделало
найди строку:
$replace[$k] = str_replace($kk, $md5_kk, $v);
и замени ее на:
$replace[$k] = str_replace($kk, $md5_kk, $replace[$k]);
полный код:
<?php
/*
Plugin Name: Chesser Relpace
Description: Find and replace substrings
Author: Chesser
Version: 1.0
Author URI: http://chesser.ru/blog/
*/
function func_replace($content) {
$replace = array(
'gofuck forum' => '<a href="http://gofuckbiz.info">gofuck forum</a>',
'forum' => '<a href="http://gofuckbiz.com">forum</a>',
'gofuck forum link' => '<a href="http://gofuckbiz.info">gofuck forum link</a>',
);
function cmp($a, $b) {
$a = strlen($a);
$b = strlen($b);
if ($a == $b) return 0;
return ($a < $b) ? 1 : -1;
}
uksort($replace, 'cmp');
$replace_after = array();
$tmp = $replace;
array_shift($tmp);
foreach($replace as $k=>$v) {
foreach($tmp as $kk=>$vv)
if(strpos($v, $kk) !== false) {
$md5_kk = md5($kk) . 'gofuck';
$replace[$k] = str_replace($kk, $md5_kk, $replace[$k]);
$replace_after[$md5_kk] = $kk;
}
array_shift($tmp);
}
$content = str_replace(array_keys($replace), array_values($replace), $content);
$content = str_replace(array_keys($replace_after), array_values($replace_after), $content);
return $content;
}
add_filter('the_content', 'func_replace');
?>
пробовал на твоем примере из лички, работало |
| 05.04.2011, 22:18 | iloveadult | работает, ахуенно, спасибо |
| 06.04.2011, 00:02 | sergeospb | Так как лично у меня на блогах и так стоит куча плугинов, что юзают add_filter('the_content', 'xxx), чтобы у меня заработало я поправил:
add_filter('the_content', 'func_replace', 100); |
| 06.04.2011, 09:49 | chesser | тоже добавил параметр приоритета в код wordpress-плагина автозамены текста (http://chesser.ru/blog/wordpress-plugin-chesser-autoreplace-text/). Может потом еще веб-форму настройки правил прикручу.
Хотел вчера залить плагин в wordpress svn, что-то папку с плагином создавать не хочет. Может апрув надо ждать? Хотя с предыдущим плагином не было таких проблем :eek: |
| 13.04.2011, 03:07 | chesser | кстати, залил новую версию плагина в репозиторий Wordpress
у кого работает автоматическая установка плагинов в админ зоне wp, можно найти мой плагин автозамены текста по слову chesser
инструкция по настройке по ссылке выше, но там все просто: таблица из двух колонок "что искать" и "на что заменять".
С юникодом не стал заморачиваться, как-то оно там криво выходит с ним.
Если есть баги - пишите, поправлю |
Работает на vBulletin® версия 3.8.6. Copyright ©2000-2011, Jelsoft Enterprises Ltd. Перевод: zCarot
|