[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения, поиск
art-apple
Ребята, не могу "вкурить" рег. выражения.
Пишу небольшой плагин для Joomla, суть вот в чем:
В конец статьи я буду добавлять некий тег, к примеру
{soc,2} этот тег будет заменен по определенный правилам на нужный мне код.
имеем грубо говоря
<?php
$text="Бла бла бла {soc,2}"; // вместо двойки может быть любое целое число
?>

Как мне получит это число? Дайте пример пожалуйста хотя бы с объяснениями. Ну или на моем примере поясните.
Игорь_Vasinsky
Цитата
вместо двойки может быть любое целое число

какой? первой или второй?
Цитата
{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


$str = 'adsda adsdad {soc,2}'; // строка для поиска


/*

$pattern шаблон поиска


{soc, ...} -> где именно ищем, т.к. числа могут попадаться и ранее
\d -> любое число от 0-9, можно записать и так [0-9], точно не помню.
*/


$pattern = '#{soc,(\d)}#';

if(preg_match($pattern, $str, $matches)){ //$matches массив найденных совпадений

echo var_dump($matches); //проверяем, что паттерн правильный



}

$str = preg_replace($pattern, '<br/>', $str); // производим замену в строке.

echo var_dump($str);



Более красиво и вдумчиво писать нет времени.
Игорь_Vasinsky
сразу preg_replace() biggrin.gif
зачем 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
Это для наглядного примера. Естественно, что два раза нагружать сайт регулярками как минимум глупо.
art-apple
Keeper, спасибо огромное, все доступно.
А как мне получить то самое число в моем теге? и число кстати может быть не 0-9, может быть 1000, 34500, любое хоть 754329. 0-9 - это цифры, число может быть из нескольких цифр.
Заранее благодарю за ответ.
Игорь_Vasinsky
Цитата
$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
\d любое число от 0-9
\d+ любое количество чисел т.е. 1, 22, 333, 4444



$str = 'adsda adsdad {soc,2222}'; // строка для поиска


/*

$pattern шаблон поиска


{soc, ...} -> где именно ищем, т.к. числа могут попадаться и ранее
\d -> любое число от 0-9, можно записать и так [0-9], точно не помню.
*/


function myfunc($matches){ // функция для замены

return '<div id='.$matches[1].'>';

}

$pattern = '#{soc,(\d+)}#';



$str = preg_replace_callback($pattern,'myfunc'


, $str); // производим замену в строке.

var_dump($str);



Регулярные выражения
art-apple
Еще раз огромное спасибо всем за помощь! У меня все получилось, что я хотел.
Плюсануть не удается, не имею прав...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.