|
|
|
| Добрый день уважаемые форумчане. Подскажите пожалуйста, как сделать замену в строке:
$content = '[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
|
Мне нужно в зависимости от исходного числа (1,2,3 - но может табов будет и больше), заменять "vc_tab" на "vc_tab tab="active""
Буду очень признателен за помощь. | |
|
|
|
|
|
|
|
для: TanTaL91
(05.11.2013 в 23:35)
| |
$result = preg_replace('/vc_tab(?=[^\]]*Tab \d+)/', 'vc_tab tab="active"', $content);
|
| |
|
|
|
|
|
|
|
для: duhon
(06.11.2013 в 11:59)
| | Спасибо, но не помогло.
Решение нашел вот в этом:
$string = '[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
$result = preg_replace("/(vc_tab .*?){3}/is", 'vc_tab active_tab', $string);
|
Но есть беда, он почему то режет строку... в результате, чем выше цифра, тем больше он выводит. | |
|
|
|
|
|
|
|
для: TanTaL91
(06.11.2013 в 15:26)
| | http://phpfiddle.org/main/code/5bt-x5v:
<?php
$content = '[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
echo preg_replace("/vc_tab( title=\"Tab \d+?\")/","vc_tab tab=\"active\"$1",$content);
?>
|
| |
|
|
|
|
|
|
|
для: Deed
(06.11.2013 в 19:13)
| | Так он всем расставил табы... а мне то надо только одному, который выберет пользователь... | |
|
|
|
|
|
|
|
для: TanTaL91
(06.11.2013 в 22:01)
| | Когда "выбрал пользователь", как выглядит его выбор?
Тут, наверное, нужен простой str_replace() http://php.net/manual/ru/function.str-replace.php | |
|
|
|
|
|
|
|
для: Deed
(06.11.2013 в 22:17)
| | Все очень просто, человек вбивает цифру, 1, 2 , 3. И в зависимости от цифры нужному из [vc_tab добавляется уже класс.
Если вводит цифру 1:
[vc_tab tab="active" title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]
|
Если вводит цифру 2:
[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab tab="active" title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]
|
| |
|
|
|
|
|
|
|
для: TanTaL91
(06.11.2013 в 22:28)
| |
<?php
$str='[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
$for_tab=2;
$new_str=str_replace('vc_tab title="Tab '.$for_tab.'"','vc_tab tab="active" title="Tab '.$for_tab.'"',$str);
echo $new_str;
?>
|
http://phpfiddle.org/main/code/r62-5cq | |
|
|
|
|
|
|
|
для: Deed
(06.11.2013 в 22:43)
| | Тайтл постоянно меняется, на нем нельзя завязывать эту систему... Так как Tab 1 и тд... это для примера :( | |
|
|
|
|
|
|
|
для: TanTaL91
(06.11.2013 в 23:27)
| | В принципе, подошло бы и такое решение:
Что бы сначала всем раздал active_tab=\"false\"
А потом у нужного заменил на true
$content = '[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
$content = preg_replace("/vc_tab( title=\"Tab \d+?\")/","vc_tab active_tab=\"false\"$1",$content);
$content = preg_replace("ТУТ ЧТО ТО НАПИСАТЬ","true",$content);
echo $content;
|
Было бы волшебно!) | |
|
|
|
|
|
|
|
для: TanTaL91
(06.11.2013 в 23:38)
| |
<?php
$str='[vc_tab title="Tab 1" tab_id="1383336405-1-60"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383336405-2-9"][vc_column_text][/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383336581182-2-7"][vc_column_text][/vc_column_text][/vc_tab]';
$for_tab=2;
$nmbr=preg_match_all('/\[vc_tab.+?\/vc_tab\]/',$str,$m);
if($for_tab>$nmbr){ //если введенное число больше, чем нужно
echo "Your number is incorrect!";
}
else{
$m[0][$for_tab-1]=str_replace('[vc_tab','[vc_tab tab="active"',$m[0][$for_tab-1]);
$new_str=implode("",$m[0]);
echo $new_str;
}
?>
|
http://phpfiddle.org/main/code/wep-987 | |
|
|
|
|
|
|
|
для: Deed
(06.11.2013 в 23:56)
| | Спасибо Вам за помощь! | |
|
|
|
|
|
|
|
для: Deed
(06.11.2013 в 23:56)
| | А если там имеет внутри контент, то уже не работает(
[vc_tabs active_tab="2"][vc_tab title="Tab 1" tab_id="1383736004-1-85"][vc_column_text]
I am text block. Click edit button to change this text.
[/vc_column_text][/vc_tab][vc_tab title="Tab 2" tab_id="1383736004-2-62"][vc_column_text]
I am text block. Click edit button to change this text.
[/vc_column_text][/vc_tab][vc_tab title="Tab 3" tab_id="1383736910489-2-6"][vc_column_text]
I am text block. Click edit button to change this text.
[/vc_column_text][/vc_tab][/vc_tabs]
|
| |
|
|
|
|
|
|
|
для: TanTaL91
(07.11.2013 в 07:45)
| | Добавил модификатор S и все заработало, привожу пример, может кому то будет полезно:
$nmbr=preg_match_all('/\[vc_tab (.*)vc_tab\]/s',$content,$content_arrow);
|
| |
|
|
|