|
| |
|
|
| |
для: Fernus
(03.01.2008 в 23:25)
| | | Проблема вроде решена...мне в другом месте подсказали=)
Вот код:
<?php
$text='транслит1 <нетранслит1> транслит2 <нетранслит2> ';
$GLOBALS['tran']=0;
function array_callback($v)
{
$GLOBALS['tran']++;
if ($GLOBALS['tran']%2)
return lat2rus($v);
else return $v;
}
function lat2rus($v)
{
$v // ТРАНСЛИТИМ
return $v;
}
function translit($text)
{
return implode('',array_map('array_callback',preg_split('|<([^>]+)>|U',$text,-1,PREG_SPLIT_DELIM_CAPTURE)));
}
echo translit($text);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Fernus
(03.01.2008 в 23:14)
| | | Так же мой код не будет работать с текстом вида "<любой текст>и тут любой текст<любой текст>опять текст" | |
| |
|
|
| |
|
|
| |
для: Fernus
(03.01.2008 в 23:00)
| | | Вот полностью моя задача, так сказать: При транслите текста надо сделать так, чтобы текст между < и > не транслировался...
Вот я подправил свой код, но он так же не будет работать с текстом вида "<любой текст>и тут любой текст"
<?php
if(strpos($text, "<") !== false) {
$t = explode("<", $text);
if(strpos($t[1], ">") !== false) {
$t2 = explode(">", $t[1]);
$res = $t2[0];
$text = trun_to_rus($text); // TRANSLITION
$ts = explode("<", $text);
$td = explode(">", $ts[1]);
$text = str_replace("<".$td[0].">", $res, $text);
}
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: bronenos
(03.01.2008 в 22:49)
| | | Блин...извиняюсь!Мне немножко не то надо...мне наоборот надо работать с текстом, который не находится между < и > | |
| |
|
|
| |
|
|
| |
для: Faraon
(03.01.2008 в 22:44)
| | | а что не так | |
| |
|
|
| |
|
|
| |
для: Faraon
(03.01.2008 в 22:44)
| | | Faraon, Хм...спасибо.Попробую...
Если ещё будут варианты, пишите... | |
| |
|
|
| |
|
|
| |
для: Fernus
(03.01.2008 в 22:28)
| | | >сначало вытащить этот кусок, сделать с ним нужную операцию и вставить обратно...
"<b>Здесь форматируйте как угодно текст</b>"
И он будет заменен с вашими рецензиями.
<?php
$t='Любой текст <тут тоже любой текст> и тут любой текст';
$t=preg_replace("#<.+?>#", "<b> Здесь форматируйте как угодно текст </b>", $t);
print $t;
?>
| Или, что то я непонимаю? | |
| |
|
|
| |
|
|
| |
для: Faraon
(03.01.2008 в 22:11)
| | | Faraon, Мне надо сначало вытащить этот кусок, сделать с ним нужную операцию и вставить обратно...
Вот я кое-чё придумал, но не будет работать в таком случае: "<тут тоже любой текст>и тут любой текст"
А может быть и вообще не будет работать...Гг
<?php
if(strpos($text, "<") !== false) {
$t = explode("<", $text);
if(strpos($t[1], ">") !== false) {
$t2 = explode(">", $t[1]);
$res = $t2[0];
// Делаем нужную опперацию с $res
$text = str_replace("<".$t2[0].">", $res, $text);
}
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Fernus
(03.01.2008 в 22:03)
| | | Если правильно понял
<?php
$t='Любой текст <тут тоже любой текст> и тут любой текст';
$r=preg_replace("#<.+?>#", "<b>Это замененный текст</b>", $t);
print $r;
?>
|
| |
| |
|
|
| |
|
|
| | Надо сделать так:
Если в строке содержится текст вида "Любой текст<тут тоже любой текст>и тут любой текст", или, например, "<тут тоже любой текст>и тут любой текст", или же "Любой текст<тут тоже любой текст>", ТО берём всё что между < и >, делаем нужную опперацию с текстом и вставляем обратно, НО уже без < и >.
Вообщем, думаю, поняли...=) | |
| |
|
|
|