|
| Дата |
|
USD/RUB | 88.4375 | BTC/USD | 67650.7289 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
03.03.2015, 02:48
|
#1
|
Senior Member
Регистрация: 30.06.2007
Сообщений: 107
Бабло: $44020
|
Скрипт поиска и замены
Накидайте, плз, php скрипт преобразования BB кода в html:
Есть исходный файл со строками вида:
PHP код:
[url=http://mysite.com]some_anchor[/url]
нужно пройтись по всем строкам и преобразовать в:
PHP код:
<a href="http://mysite.com">some_anchor</a>
Результат записать в отдельный файл, не изменяя исходный.
|
|
|
03.03.2015, 02:59
|
#2
|
Member
Регистрация: 13.11.2014
Сообщений: 88
Бабло: $24725
|
$str = file_get_contents("file.html");
$replace = str_replace('[url=', '<a href=', $str,);
$newfile = fopen("zamena_"."$file","w+");
fwrite($newfile, $replace);
fclose($newfile);
|
|
|
03.03.2015, 03:07
|
#3
|
jaros
Регистрация: 10.05.2009
Адрес: Киев
Сообщений: 1,498
Бабло: $221845
|
PHP код:
<?php $file_nam = file('links.txt');
foreach($file_nam as $link){
$repl = str_replace('[url=', '<a href="', $link); $repl = str_replace('[/url]', '</a>', $repl); $repl = str_replace(']', '">', $repl); $open=fopen('new_links.txt',"a+"); fwrite($open,$repl); fclose($open);
} ?>
Последний раз редактировалось jarosek; 03.03.2015 в 03:16.
|
|
|
03.03.2015, 03:28
|
#4
|
Senior Member
Регистрация: 31.03.2011
Сообщений: 3,336
Бабло: $669045
|
О, а как сделать заменю любого на любое?
Писал вот такую штуку, но она как-то через раз мне отрезает лишнее.
PHP код:
function substr_replacer_for_html($article_text, $search_word, $replace_word) {
$len = strlen($search_word);
$pos = strpos($article_text, $search_word);
$new_text = substr_replace($article_text, $replace_word, $pos, $len);
return($new_text);
}
Прям чтобы туда со скобками и тд
|
|
|
03.03.2015, 22:55
|
#5
|
Member
Регистрация: 19.09.2014
Сообщений: 48
Бабло: $11495
|
Цитата:
Сообщение от Strikelol
О, а как сделать заменю любого на любое?
Писал вот такую штуку, но она как-то через раз мне отрезает лишнее.
PHP код:
function substr_replacer_for_html($article_text, $search_word, $replace_word) {
$len = strlen($search_word);
$pos = strpos($article_text, $search_word);
$new_text = substr_replace($article_text, $replace_word, $pos, $len);
return($new_text);
}
Прям чтобы туда со скобками и тд
|
помойму это на пхп уже сделали и оно называется str_replace
|
|
|
04.03.2015, 00:56
|
#6
|
Senior Member
Регистрация: 31.03.2011
Сообщений: 3,336
Бабло: $669045
|
Цитата:
Сообщение от Joe Perry
помойму это на пхп уже сделали и оно называется str_replace
|
Функции эти точно разные задачи исполняют, хотя бы потому что та что в моём посте отрабатывает раз. Но str_replace() всё равно не заменяет нормально скобки и слэши. Я конечно не заморачивался над тем чтобы осознать каким образом нужно "правильно" её юзать, но то что хочется - она не делает, как и первая. Хотя первая должна. У меня надо было вырезать пару тегов, в части текстов она с тегами еще отрезала несколько слов =\ Не критично но хотелось бы иметь рабочую или уметь пользоваться той что есть.
|
|
|
04.03.2015, 01:01
|
#7
|
jaros
Регистрация: 10.05.2009
Адрес: Киев
Сообщений: 1,498
Бабло: $221845
|
Цитата:
Сообщение от Strikelol
Функции эти точно разные задачи исполняют, хотя бы потому что та что в моём посте отрабатывает раз. Но str_replace() всё равно не заменяет нормально скобки и слэши. Я конечно не заморачивался над тем чтобы осознать каким образом нужно "правильно" её юзать, но то что хочется - она не делает, как и первая. Хотя первая должна. У меня надо было вырезать пару тегов, в части текстов она с тегами еще отрезала несколько слов =\ Не критично но хотелось бы иметь рабочую или уметь пользоваться той что есть.
|
так правильно задавай, экранируй символы и т.д.
|
|
|
04.03.2015, 01:08
|
#8
|
Python кодер
Регистрация: 10.09.2012
Сообщений: 95
Бабло: $27484
|
PHP код:
<?php
$content = file_get_contents("in.txt");
$content = preg_replace('#\[url=([^]]+)\]([^]]+)\[/url\]#', '<a href="\1">\2</a>', $content);
file_put_contents('out.txt');
?>
|
|
|
04.03.2015, 07:38
|
#9
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,354
Бабло: $470735
|
Strikelol, я особо не вдумывался чего тебе надо, но заметил, что ты оперируешь позициями в str* функциях, что опасно при работе с мультибайтом, т.е. когда один символ занимает более одного байта. Твой код будет корректен только для однобайтовых кодировок типа cp1251 или iso-8859-*, но если у тебя utf8 или другой unicode, то нужно использовать, например, mb_str* функции
|
|
|
|