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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Работа с макросами

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: ЯR   (26.07.2006 в 11:19)   письмо автору
 
   для: Shorr Kan   (26.07.2006 в 11:14)
 

>Вариант ЯR - я не понял, как работает, но работает.
А что тут непонятного?
Заменяется всё, что подходит под шаблон. Лимит - 1.

   
 
 автор: Shorr Kan   (26.07.2006 в 11:14)   письмо автору
 
   для: Axxil   (26.07.2006 в 11:08)
 

Вариант ЯR - я не понял, как работает, но работает.
А вот ваш, Axxil, работает так, что я даже понял...

Спасибо :)

   
 
 автор: Axxil   (26.07.2006 в 11:08)   письмо автору
 
   для: Shorr Kan   (24.07.2006 в 16:25)
 

Вот типа того:

<?
$str 
"<table>  

<tr>  
<td>[text_30]</td>  
<td>[text_20]</td>  
</tr>  

<tr>  
<td>[text_30]</td>  
<td>[text_30]</td>  
</tr>  

</table> "

$pattern '|\[([^\]]*)\]|is'
preg_match_all($pattern,$str,$out); 
print_r($out[1]); 
foreach(
$out[1] as $key=>$item){
  
$str preg_replace("|\[".$item."\]|is",'$text'.$key,$str,1);

echo 
htmlentities($str);
?>

   
 
 автор: ЯR   (26.07.2006 в 11:06)   письмо автору
 
   для: Shorr Kan   (26.07.2006 в 10:44)
 

Может так:

<?php
$str 
"<table>  
<tr>  <td>[text_30]</td>  <td>[text_20]</td>  </tr>  
<tr>  <td>[text_30]</td>  <td>[text_30]</td>  </tr>  
</table> "
;
$n 30;
preg_replace("#(.*)<td>\[text_$n\]</td>(.*)#i""\\1<td>$text1</td>\\2"$str1);
?>


?

   
 
 автор: Axxil   (26.07.2006 в 10:57)   письмо автору
 
   для: Shorr Kan   (26.07.2006 в 10:00)
 

Да просто с теоремой Ферма лоханулся, вот и убрал чтоб не позориться :)
Нобелевская премия $1.000.000 если не ошибаюсь.
Но дают её обычно лет через 20 после открытия. Так что надо торопиться :)

У функции preg_replace есть 4 параметр который и ограничивает кол-во замен.
Только пока не врублюсь какэто к вашему случаю приделать...
Щас покумекаем

   
 
 автор: Shorr Kan   (26.07.2006 в 10:44)   письмо автору
 
   для: Duran   (26.07.2006 в 10:06)
 

Проблема в том, что у меня нет самой исходной задачи. У меня есть желаемая человеком реализация - и я её должен реализовать. То есть - я не могу написать задачу. Если бы мог - я бы, как уже сказал, решил бы другим макаром это.
Но! У меня дано изначально: [text_N] , где N - это количество выполняемых действий. Как вы полнимаете - в одном документе text_N может быть и одинаковым - нельзя НЕ рассчитывать на это. Именно поэтому я и решаю проблему - человек может ввести в один документ не единожды text_30 ... а пять раз. Мне нужно только сделать замену первого найденного соответствия

http://php.net/str_replace - взгляните на параметр count. Это то, что мне нужно. И только. В php4 этого нет. Но, видимо, есть аналогичная возможность, используя регулярные выражения.

Как видите - я не создаю проблему. Я ищу решение к поставленной мне задаче, которая звучит примерно так - "реализация должна быть такая".
Вы никогда не встречались с необходимостью сделать именно так, а не иначе, даже если иначе было бы и проще, и умнее, и лучше, и надежнее? Если нет - вот, косвенно встретились...

   
 
 автор: Duran   (26.07.2006 в 10:06)   письмо автору
 
   для: Shorr Kan   (26.07.2006 в 10:00)
 

Макрос - вообще штука применимая тока к "вживляемым" объектам, например приложение VBA в excell. Здесь скорее всего применимо понятие "шаблон". Проблема в том, что вы не даете нам саму задачу, а желаете найти реализацию вашего решения поставленной задачи.
Если вам нужно найти решение, а не создавать проблему, может стоит написать именно саму задачу ?

   
 
 автор: Shorr Kan   (26.07.2006 в 10:00)   письмо автору
 
   для: Axxil   (26.07.2006 в 09:56)
 

Не-не, нехорошо прятать бизнес-предложение... :)

   
 
 автор: Axxil   (26.07.2006 в 09:56)   письмо автору
 
   для: Shorr Kan   (26.07.2006 в 09:55)
 

-

   
 
 автор: Shorr Kan   (26.07.2006 в 09:55)   письмо автору
 
   для: Axxil   (26.07.2006 в 09:47)
 

Именно так - нельзя. Делай я для себя - я бы, конечно, сделал [text_N_M] - где N - уникальный номер, а M - эти самые "30", "20", "40", и так далее. Но я делаю не для себя - и от меня ждут этого решения.

Да и потом - вот теперь уже - просто интересно. Будь это php5 - я бы сделал просто str_replace(); - с четтвертым параметром (count), но неужели на php4 этого же сделать нельзя? В частности - неужели регулярные выражения не могут произвести замену "A" на "B" - только один раз, в самом первом встреченном месте?

А что касается нобелевской премии - а зачем?... Был бы смысл - доказали бы. А если после этого будет смысл доказать обратное - докажем и обратное. Математика - наука точная, но витиеватая. Да и потом - вопрос по теме строковых функций и регулярных выражений, а не по разделу math...
А какова сумма нобелевской премии?

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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