|
|
|
| Прошу вашей помощи.
Нужно сделать такую функцию:
есть строка:test~test~testtest.
нужно чтоб из этой строки получилась такая.
тестtestтесттест,как транслировать всю строку я знаю,но вот как оставить без изменений часть заключенную между ~~? | |
|
|
|
|
|
|
|
для: shiling
(13.01.2006 в 23:36)
| | Можно прибегнуть к регулярным выражениям - много вхождений ~~ в тексте? | |
|
|
|
|
|
|
|
для: cheops
(13.01.2006 в 23:58)
| | Да нужно чтоб таких вхождений было больше одного. | |
|
|
|
|
|
|
|
для: shiling
(14.01.2006 в 10:14)
| | А не могли бы привести кусочек реального текста, побольше, чтобы можно было потестировать... | |
|
|
|
|
|
|
|
для: cheops
(14.01.2006 в 13:51)
| |
Zdrastvujte , menja zovut ~Shiling~ nadejusq vam ponravitqsja na moem sajte ~shiling.vip.su~
|
вывод
Здраствуйте , меня зовут Shiling надеюсь вам понравиться на моем сайте shiling.vip.su
|
| |
|
|
|
|
|
|
|
для: shiling
(14.01.2006 в 14:31)
| | Чеопс,вот,я привел кусочек текста,ну как,вы поможете? | |
|
|
|
|
|
|
|
для: shiling
(15.01.2006 в 15:33)
| | Подумать нужно, я сначала хотел через preg_match_callback сделать(), но через него удобно вытащить только то, что находится внутри ~~, а то что снаружи сложно... никак не могу более или мнее элегантное решение найти :(
PS В русской транслитации лучши использовать хеопс, вместо чеопс :) | |
|
|
|
|
|
|
|
для: shiling
(13.01.2006 в 23:36)
| | На всякий случай, если не найдется более элегантного решения, вот вам железное, "в лоб"
1) Разбить текст по тильдам, будет массив.
2) В foreach транслитить элементы "через один" (только вначале проверить, с чего начинать)
3) Соединить обратно. | |
|
|
|
|
|
|
|
для: Киналь
(15.01.2006 в 21:58)
| | Извините,хеопс,а как транслировать через один? | |
|
|
|
|
|
|
|
для: shiling
(15.01.2006 в 22:12)
| | . | |
|
|
|
|
|
|
|
для: shiling
(15.01.2006 в 22:12)
| | . | |
|
|
|
|
|
|
|
для: shiling
(15.01.2006 в 22:12)
| | Вопрос, наверное, все же мне=)
Вот у вас исходная строка $str и массив $str_array, из нее полученный. Дальше что-то типа
<?
if(substr($str, 0, 1) == "~") $i=1; else $i=2;
foreach ($str_array as $elem)
{
if($i%2 == 0) translit($elem); // $i четное - транслитим
$i++;
}
?>
|
| |
|
|
|
|
|
|
|
для: Киналь
(16.01.2006 в 15:50)
| | Киналь,спасибо огромное,а функция translit() уже предусмотрена php???А я дурак сам ее писал:( | |
|
|
|
|
|
|
|
для: shiling
(16.01.2006 в 17:45)
| | Кха... Прошу прощения, забыл=) translit - это ваша функция, заключающаяся в замене русских букв на английские. Поищите по форуму, есть готовые решения, если надо. | |
|
|
|
|
|
|
|
для: Киналь
(16.01.2006 в 19:18)
| | спасибо | |
|
|
|