art-apple
12.06.2013 - 10:36
Ребята, не могу "вкурить" рег. выражения.
Пишу небольшой плагин для Joomla, суть вот в чем:
В конец статьи я буду добавлять некий тег, к примеру
{soc,2} этот тег будет заменен по определенный правилам на нужный мне код.
имеем грубо говоря
<?php
$text="Бла бла бла {soc,2}";
?>
Как мне получит это число? Дайте пример пожалуйста хотя бы с объяснениями. Ну или на моем примере поясните.
Игорь_Vasinsky
12.06.2013 - 10:38
Цитата |
вместо двойки может быть любое целое число |
какой? первой или второй?
Цитата |
{soc,2} этот тег будет заменен по определенный правилам на нужный мне код. |
если эта метка статичная - то достаточно и strtr()
если динамическая - то preg_replace() возможно + callback
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Гость_Keeper
12.06.2013 - 11:15
$str = 'adsda adsdad {soc,2}';
$pattern = '#{soc,(\d)}#';
if(preg_match($pattern, $str, $matches)){
echo var_dump($matches);
}
$str = preg_replace($pattern, '<br/>', $str);
echo var_dump($str);
Более красиво и вдумчиво писать нет времени.
Игорь_Vasinsky
12.06.2013 - 11:17
сразу preg_replace()
зачем 2 раза напрягаться регулярками))
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Гость_Keeper
12.06.2013 - 11:21
Это для наглядного примера. Естественно, что два раза нагружать сайт регулярками как минимум глупо.
art-apple
12.06.2013 - 16:37
Keeper, спасибо огромное, все доступно.
А как мне получить то самое число в моем теге? и число кстати может быть не 0-9, может быть 1000, 34500, любое хоть 754329. 0-9 - это цифры, число может быть из нескольких цифр.
Заранее благодарю за ответ.
Игорь_Vasinsky
12.06.2013 - 17:04
Цитата |
$pattern = '#{soc,(\d)}#'; |
\d - числа
? - или нет или 1 раз
+ - от 1го и более
* - либо нет либо скока угодно
{2,12} от 2 до 12 подряд
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
CodeKeeper
12.06.2013 - 17:06
\d любое число от 0-9
\d+ любое количество чисел т.е. 1, 22, 333, 4444
$str = 'adsda adsdad {soc,2222}';
function myfunc($matches){
return '<div id='.$matches[1].'>';
}
$pattern = '#{soc,(\d+)}#';
$str = preg_replace_callback($pattern,'myfunc'
, $str);
var_dump($str);
Регулярные выражения
art-apple
12.06.2013 - 18:40
Еще раз огромное спасибо всем за помощь! У меня все получилось, что я хотел.
Плюсануть не удается, не имею прав...
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.