Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Вопросик по регулярным выражениям. В пхп:)   Найти похожие ветки 

 
antonn ©   (2007-04-29 22:50) [0]

уже начал почитывать про регулярные выражения, но понял, что для решения одной заковырки изучать кучу нового материала как то не очень... Есть у меня строка, в ней между тегами [h][/h] находится текст (точнее просто набор букв:)), и мне нужно убрать в этих буквах пробелы. Т.е. вместо [h]f f[/h] получить [h]ff[/h]. Примерно так же хочу и ссылки позже в тегах обрамлять. Но вот с пробелами никак не справлюсь. Теги то я выделяю и их содержимое тоже, а как в них удалить пробелы - не пойму...
$ddd="[d] d d[/d]";
$ddd=eregi_replace("\\[d\\]?(.*)\\[/d\\]?", "|\\1|", $ddd); //палочки просто вместо тегов, чтоб границы видеть

если бы в строке был бы только один блок тегов, я бы сделал, но их может быть много:( В общем, подскажите, пожалуйста, как такое написать (и можно ли вообще).
Я вообще верхнуюю штуку правильно написал? :)


 
ferr ©   (2007-04-29 22:56) [1]

что-то мне не понятно что у вас там понаписано.
надо заменять "\s+" на "" и всё. + сначала вытащить кусок в котором заменять..


 
antonn ©   (2007-04-29 22:59) [2]

ну в общем условие такое получается - удалить все пробелы в тексте обрамленного тегами [h] и [/h]. Пример выше я соорудил методом копипаста и научного тыка и он только находит текст м/у тегами:)


 
McSimm ©   (2007-04-29 23:31) [3]


> если бы в строке был бы только один блок тегов, я бы сделал,
>  но их может быть много:

Все обстоит гораздо сложнее. тэги могут оказаться незакрытыми, вложенными, пересекающимися. Так что поломать голову придется.

Позволю себе дать совет - раз уж все равно с кучей материала придется знакомиться, лучше сразу забыть про ereg и использовать только preg. Они лучше во всех отношених.


 
Zeqfreed ©   (2007-04-29 23:43) [4]

<?php
   function strip_spaces($a, $b, $c) {
       return $a . str_replace(" ", "", $b) . $c;
   }

   $a = "hello[h]this   text contains few spaces[/h]here the spaces   are [/h]  again";
   $b = preg_replace("/(\[h\])(.*)(\[\/h\])/ie", "strip_spaces("$1", "$2", "$3")", $a);
   
   print "$a = " . $a . "<br/>\n";
   print "$b = " . $b . "<br/>\n";
?>


 
antonn ©   (2007-04-29 23:50) [5]

McSimm, да я так и понял, что preg интересней...
Zeqfreed, Спасибо!

я немного накопипастил, похоже на правду?
function callback($data){
 $data[0]=preg_replace("/(\s)/","",$data[0]);
 return $data[0];
}
$ddd=preg_replace_callback("#\[h\](.*?)\[/h\]#si", "callback", $ddd);


 
Zeqfreed ©   (2007-04-30 00:27) [6]

Не знаю зачем столько сложностей :) Ну если работает, то похоже ;)


 
antonn ©   (2007-04-30 14:41) [7]

кстати говоря, код в [4] все таки рубает пробелы и между блоками тегов... придется поверить в правильность своего кода и его использовать (честно - сам не пойму, как оно работает:)), он хоть не рубает вне тегов...


 
McSimm ©   (2007-04-30 14:59) [8]


> все таки рубает пробелы и между блоками тегов


* по умолчанию работает в жадном режиме, чтобы выключить, надо использовать (.*?)


 
antonn ©   (2007-04-30 15:02) [9]

хм... чувствую себя балбесом:)


 
McSimm ©   (2007-04-30 15:10) [10]

это просто.
в строке "AbcAdeA" шаблон /A(.*)A/ захватит строку целиком, т.е. "жадно", вопросительный знак после квантификатора выключает жадность, т.е. (.*?) захватит "AbcA"


 
antonn ©   (2007-04-30 15:16) [11]

ну да, это я уже понял:)
кстати, где то видел ссылку в тегах [img][/img], которая скушала последний блок... тут подсветка по словам идет? можно проверять, есть ли в слове "[img" и не подсвечивать, тогда  и тег заработает:) Примерно для этих целей нужно было избавиться от пробелов, чтобы [img] и [/img] попали в одно слово со ссылкой...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.074 c
15-1177569389
Александр Иванов
2007-04-26 10:36
2007.05.27
Видно не только в России есть Жириновский


2-1178889302
Ezorcist
2007-05-11 17:15
2007.05.27
Можно отобразить в label текс шрифтом не в системе?


2-1178724280
Veronika-n
2007-05-09 19:24
2007.05.27
Работа с DBGrid


2-1178621966
Doom-2
2007-05-08 14:59
2007.05.27
ClientHeight


15-1177441862
koha
2007-04-24 23:11
2007.05.27
Реально, занимается ли кто фотографиями?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский