Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: функция транслит
 
 автор: shiling   (13.01.2006 в 23:36)   письмо автору
 
 

Прошу вашей помощи.
Нужно сделать такую функцию:
есть строка:test~test~testtest.
нужно чтоб из этой строки получилась такая.
тестtestтесттест,как транслировать всю строку я знаю,но вот как оставить без изменений часть заключенную между ~~?

   
 
 автор: cheops   (13.01.2006 в 23:58)   письмо автору
 
   для: shiling   (13.01.2006 в 23:36)
 

Можно прибегнуть к регулярным выражениям - много вхождений ~~ в тексте?

   
 
 автор: shiling   (14.01.2006 в 10:14)   письмо автору
 
   для: cheops   (13.01.2006 в 23:58)
 

Да нужно чтоб таких вхождений было больше одного.

   
 
 автор: cheops   (14.01.2006 в 13:51)   письмо автору
 
   для: shiling   (14.01.2006 в 10:14)
 

А не могли бы привести кусочек реального текста, побольше, чтобы можно было потестировать...

   
 
 автор: shiling   (14.01.2006 в 14:31)   письмо автору
 
   для: cheops   (14.01.2006 в 13:51)
 

Zdrastvujte , menja zovut ~Shiling~ nadejusq vam ponravitqsja na moem sajte ~shiling.vip.su~  

вывод
Здраствуйте , меня зовут Shiling надеюсь вам понравиться на моем сайте shiling.vip.su

   
 
 автор: shiling   (15.01.2006 в 15:33)   письмо автору
 
   для: shiling   (14.01.2006 в 14:31)
 

Чеопс,вот,я привел кусочек текста,ну как,вы поможете?

   
 
 автор: cheops   (15.01.2006 в 20:16)   письмо автору
 
   для: shiling   (15.01.2006 в 15:33)
 

Подумать нужно, я сначала хотел через preg_match_callback сделать(), но через него удобно вытащить только то, что находится внутри ~~, а то что снаружи сложно... никак не могу более или мнее элегантное решение найти :(

PS В русской транслитации лучши использовать хеопс, вместо чеопс :)

   
 
 автор: Киналь   (15.01.2006 в 21:58)   письмо автору
 
   для: shiling   (13.01.2006 в 23:36)
 

На всякий случай, если не найдется более элегантного решения, вот вам железное, "в лоб"

1) Разбить текст по тильдам, будет массив.
2) В foreach транслитить элементы "через один" (только вначале проверить, с чего начинать)
3) Соединить обратно.

   
 
 автор: shiling   (15.01.2006 в 22:12)   письмо автору
 
   для: Киналь   (15.01.2006 в 21:58)
 

Извините,хеопс,а как транслировать через один?

   
 
 автор: Киналь   (16.01.2006 в 15:46)   письмо автору
 
   для: shiling   (15.01.2006 в 22:12)
 

.

   
 
 автор: Киналь   (16.01.2006 в 15:46)   письмо автору
 
   для: shiling   (15.01.2006 в 22:12)
 

.

   
 
 автор: Киналь   (16.01.2006 в 15:50)   письмо автору
 
   для: shiling   (15.01.2006 в 22:12)
 

Вопрос, наверное, все же мне=)

Вот у вас исходная строка $str и массив $str_array, из нее полученный. Дальше что-то типа

<?
if(substr($str01) == "~"$i=1; else $i=2

foreach (
$str_array as $elem)
{
 if(
$i%== 0translit($elem); // $i четное - транслитим
 
$i++;
}
?>

   
 
 автор: shiling   (16.01.2006 в 17:45)   письмо автору
 
   для: Киналь   (16.01.2006 в 15:50)
 

Киналь,спасибо огромное,а функция translit() уже предусмотрена php???А я дурак сам ее писал:(

   
 
 автор: Киналь   (16.01.2006 в 19:18)   письмо автору
 
   для: shiling   (16.01.2006 в 17:45)
 

Кха... Прошу прощения, забыл=) translit - это ваша функция, заключающаяся в замене русских букв на английские. Поищите по форуму, есть готовые решения, если надо.

   
 
 автор: shiling   (18.01.2006 в 07:39)   письмо автору
 
   для: Киналь   (16.01.2006 в 19:18)
 

спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования