Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.04.2015
Сообщений: 2
1

Вставка переменной из регулярки в функцию

24.04.2015, 09:25. Показов 900. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Столкнулся с проблемой.
Имеется следующий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 function _replace($text_post) {
    $str_search = array(
      "#\[user=(\d+)\](.+?)\[\/user\]#is",
    );
    $str_replace = array(
      user("\$1")
     );
    return preg_replace($str_search, $str_replace, $text_post);
  }
 
 function user($id)
 {
    //Вот тут проблемы
   echo $id; // Так выводится 9 (все вроде нормально)
   echo intval($id); // Так почему то  выводиться 0
   echo chr(ord($id)); // так символ $
   
   //Почему так?, врубиться не могу 
   //В итоге необходимо получать число, которое например после intval не будет сбрасываться в 0
  }
 
 $post = '[user=9]Иванов Иван[/user]';
 
 _replace($post);
Надеюсь проблема изложена понятно.
С уважением Андрей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2015, 09:25
Ответы с готовыми решениями:

Вставка переменной в ссылку
всем привет. $value = $_GET; $content= file_get_contents('http://test1.ru/search=$value'); ...

Вставка переменной в запрос
Здравствуйте, я делаю фильтрацию таблицы по цене билета и наткнулся на такую проблему. Я ввожу в...

Вставка переменной в char
Убил уже пару часов, выхода не могу найти. TCHAR czCommandLine =...

Вставка переменной в ссылку
всем привет. вот код <? $login = $_POST; $email = $_POST; $link =...

8
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
24.04.2015, 17:03 2
Цитата Сообщение от ap86 Посмотреть сообщение
$str_search = array( "#\[user=(\d+)\](.+?)\[\/user\]#is", ); $str_replace = array( user("\$1") );
1. откуда возьмётся $1, если регулярка ещё нигде не применялась
2. для поиска значений нужна preg_match
3. найденные значения пишутся не в $1, а в $m, если так написать: preg_match('#\[user=(\d+)\](.+?)\[/user\]#is',$text_pos,$m)
4. бред тут изложен.
0
0 / 0 / 0
Регистрация: 24.04.2015
Сообщений: 2
25.04.2015, 11:53  [ТС] 3
Цитата Сообщение от tip78 Посмотреть сообщение
откуда возьмётся $1, если регулярка ещё нигде не применялась
А вот тут она не будет применяться?
Код
preg_replace($str_search, $str_replace, $text_post);
Если функцию user писать так:
Код
function user($id, $name)
{
 return "<a  href='/users/profile/".$id."'>".$name."</a>";
}
То BB-код нормально заменятся, так как нужно. (<a href="/users/profile/9" ">Иванов Иван</a>)
Но нужно внутри функции user проверить идентификатор ($id)

preg_match в данном случае не подойдет
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
25.04.2015, 12:12 4
Цитата Сообщение от ap86 Посмотреть сообщение
А вот тут она не будет применяться?
а ты туда уже сходил, чтобы она применилась?
и ещё раз: в $1 через preg_replace ничего не запишется.

правильно так:
PHP
1
2
3
4
5
6
7
function showIntval($str){
preg_match('#\[user=(\d+)\](.+?)\[/user\]#i',$str,$m);
echo intval($m[1]);
}
 
$post = '[user=9]Иванов Иван[/user]';
showIntval($post);
/s не нужен, когда шлёшь одну строку.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
26.04.2015, 09:47 5
Цитата Сообщение от tip78 Посмотреть сообщение
1. откуда возьмётся $1, если регулярка ещё нигде не применялась
Цитата Сообщение от tip78 Посмотреть сообщение
и ещё раз: в $1 через preg_replace ничего не запишется.
Ну сколько Вы еще будете обманывать людей?.. Мне интересно, Вы это нарочно делаете или по незнанию? Ну если по незнанию, то хоть проверяйте код прежде чем писать что-то, или у Вас нету php интерпретатора даже под рукой?
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
26.04.2015, 10:05 6
Цитата Сообщение от pav1uxa Посмотреть сообщение
Ну сколько Вы еще будете обманывать людей?.. Мне интересно, Вы это нарочно делаете или по незнанию? Ну если по незнанию, то хоть проверяйте код прежде чем писать что-то, или у Вас нету php интерпретатора даже под рукой?
ну и написал бы, как правильно
только покритиковать заходишь сюда.

ap86, ты не написал, что ты хочешь от функции user и чем заменить собственно

// Так выводится 9 (все вроде нормально)
нет, так выводится $1
user($1) - так ошибка

павлуха, ты лопух.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
26.04.2015, 10:24 7
Цитата Сообщение от tip78 Посмотреть сообщение
нет, так выводится $1
user($1) - так ошибка
павлуха, ты лопух.

PHP
1
2
3
4
5
<?php
$s = "text abc text";
$p = array("/a(b)c/");
$r = array("\$1");
echo preg_replace($p, $r, $s);
result:
Код
text b text
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
26.04.2015, 10:32 8
ага, только чтобы ещё в функцию сходила именно с найденным результатом, не забудь сделать
0
pav1uxa
26.04.2015, 11:27     Вставка переменной из регулярки в функцию
  #9

Не по теме:

Ладно, действительно я был неправ. Не дочитал пост ТСа :D Привык что Вы белиберду пишете и не углядел на этот раз...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2015, 11:27

Вставка переменной в строку
я только начал изучать bash и не могу понять как мне подставить значение переменной в строку...

Вставка переменной в запрос
query.exec_(&quot;insert into person values('', , '', 0, 0,0,0,0,0)&quot;) нужно вместо любого 0 поставить...

Вставка php переменной в HTML
Как вставить переменную из ФАЙЛА PHP в код HTML? Нужно именно из файла пхп Так не подойдет...

Вставка переменной в код php
Этот код выводит имена в браузер всех html файлов что лежат в корне диска. Подскажите как вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru