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

Форум PHP

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

 

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

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

тема: Работа со строками..
 
 автор: Fernus   (03.01.2008 в 22:03)   письмо автору
 
 

Надо сделать так:
Если в строке содержится текст вида "Любой текст<тут тоже любой текст>и тут любой текст", или, например, "<тут тоже любой текст>и тут любой текст", или же "Любой текст<тут тоже любой текст>", ТО берём всё что между < и >, делаем нужную опперацию с текстом и вставляем обратно, НО уже без < и >.
Вообщем, думаю, поняли...=)

   
 
 автор: Faraon   (03.01.2008 в 22:11)   письмо автору
 
   для: Fernus   (03.01.2008 в 22:03)
 

Если правильно понял

<?php
$t
='Любой текст <тут тоже любой текст> и тут любой текст';
$r=preg_replace("#<.+?>#""<b>Это замененный текст</b>"$t);
print 
$r;
?>

   
 
 автор: Fernus   (03.01.2008 в 22:28)   письмо автору
 
   для: 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);
}
}

?>

   
 
 автор: Faraon   (03.01.2008 в 22:44)   письмо автору
 
   для: Fernus   (03.01.2008 в 22:28)
 

>сначало вытащить этот кусок, сделать с ним нужную операцию и вставить обратно...

"<b>Здесь форматируйте как угодно текст</b>"

И он будет заменен с вашими рецензиями.

<?php 
$t
='Любой текст <тут тоже любой текст> и тут любой текст'
$t=preg_replace("#<.+?>#""<b> Здесь форматируйте как угодно текст </b>"$t); 
print 
$t
?>
Или, что то я непонимаю?

   
 
 автор: Fernus   (03.01.2008 в 22:48)   письмо автору
 
   для: Faraon   (03.01.2008 в 22:44)
 

Faraon, Хм...спасибо.Попробую...
Если ещё будут варианты, пишите...

   
 
 автор: bronenos   (03.01.2008 в 22:49)   письмо автору
 
   для: Faraon   (03.01.2008 в 22:44)
 

а что не так

   
 
 автор: Fernus   (03.01.2008 в 23:00)   письмо автору
 
   для: bronenos   (03.01.2008 в 22:49)
 

Блин...извиняюсь!Мне немножко не то надо...мне наоборот надо работать с текстом, который не находится между < и >

   
 
 автор: 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);

}
}

?>

   
 
 автор: Fernus   (03.01.2008 в 23:25)   письмо автору
 
   для: Fernus   (03.01.2008 в 23:14)
 

Так же мой код не будет работать с текстом вида "<любой текст>и тут любой текст<любой текст>опять текст"

   
 
 автор: Fernus   (04.01.2008 в 00:17)   письмо автору
 
   для: 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);

?>

   
Rambler's Top100
вверх

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