Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: НУжен свежий взгляд

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
KApriS
Отправлено: 25 Июля, 2013 - 08:25:04
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Вот уж глупый затык. но не могу с места сдивнуться. собираю переменную $post_content для передачи в ajax
Спойлер (Отобразить)

переменная вылетает из тэгов при выводе результата. думала, думала - пришла к выводу что кавчки конфликуют. поставила вначале удаление кавычек. но почему то не работает (( вот этот кусок тестовый:
PHP:
скопировать код в буфер обмена
  1. $previous1 = previous_post_link( '%link', 'Предыдущий', true);
  2. $dfd = '<a href="http://WPsite/?p=122" rel="prev">1Предыдущий</a>';
  3. echo $previous1;
  4. echo $dfd;
  5. echo $previous1 = str_replace('"', '', "$previous1");
  6. echo $dfd =  str_replace('"', '', $dfd);
в $dfd выставила значение, возвращаемое функцией previous_post_link( '%link', 'Предыдущий', true);. В итоге переменная $dfd ощищается от кавычек, а $previous1 нет. уже всю голову сломала. ну что еще можно сделать в данном случае? Может есть идеи, что мне сделать, чтобы переменная $previous = previous_post_link( '%link', 'Предыдущий', true); встала на свое место при формировании $post_content . Думаю что к вордпрессу данная проблема отношения не имеет, поэтому спрашиваю на своем любимом форуме, озвучьте плиз какие нить идеи... по решению.
 
 Top
AmsTaFF
Отправлено: 25 Июля, 2013 - 08:58:27
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


Помог: 1 раз(а)




Цитата:
переменная вылетает из тэгов при выводе результата

что переменная делает?
что делает эта ф-ция previous_post_link
и какой получается переменная $previous1 после применения ф-ции previous_post_link
 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2013 - 09:10:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
quinlena
Отправлено: 25 Июля, 2013 - 09:42:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. echo $previous1 = str_replace('"', '', "$previous1");

Может надо убрать кавычки?
PHP:
скопировать код в буфер обмена
  1. echo $previous1 = str_replace('"', '', $previous1);

Если не использовать str_replace, то какие ошибки вылазят?

(Отредактировано автором: 25 Июля, 2013 - 09:44:54)

 
 Top
KApriS
Отправлено: 25 Июля, 2013 - 09:56:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




EuGen пишет:

поэесперементировала, но сут осталась та же - в преобразующую функцию $dfd передается, а переменная, полученная с применением функции previous_post_link( '%link', '1111', true) - нет.
кусок кода
PHP:
скопировать код в буфер обмена
  1. $previous1 = previous_post_link( '%link', '1111', true);
  2. $dfd = '<a href="http://WPsite/?p=122" rel="prev">2222</a>';
  3. echo $previous1;
  4. echo $dfd;
  5. echo $previous = htmlentities($previous1, ENT_COMPAT);
  6. echo $dfd =  htmlentities($dfd, ENT_COMPAT);
  7. die();
выводит следующий результат.
Цитата:

<a href="http://WPsite/?p=122" rel="prev">1111</a>
<a href="http://WPsite/?p=122" rel="prev">2222</a>
&lt;a href=&quot;http://WPsite/?p=122&quot; rel=&quot;prev&quot;&gt;2222&lt;/a&gt;
а почем, не могу понять. как проверит ошибку выполнения htmlentities, почему она не работает в обоих случаях?
(Добавление)
TO quinlena
кавчки - это уже от безысходности, раньше было без ниХ)
если не использовать str-replace. перменная $previous не входит в состав создаваемой перменной
PHP:
скопировать код в буфер обмена
  1. $post_content =
  2. "...
  3.         <div id='postmid'>
  4.                 <div id='postnav' class='clearfix'>
  5.                         <div class='alignleft'>$previous</div>
  6.                         <div class='alignright'><a href=''>Следующий</a></div>
  7.                 </div>
  8.         </div>
  9. ...";
  10.  
, и при выводе alert(data). у меня получается
Цитата:
<a href="http://WPsite/?p=122" rel="prev">2222</a>
...
<div id='postmid'>
<div id='postnav' class='clearfix'>
<div class='alignleft'></div>
<div class='alignright'><a href=''>Следующий</a></div>
</div>
</div>


а должно получаться

Цитата:

<div id='postmid'>
<div id='postnav' class='clearfix'>
<div class='alignleft'><a href="http://WPsite/?p=122" rel="prev">2222</a>
...</div>
<div class='alignright'><a href=''>Следующий</a></div>
</div>
</div>

(Отредактировано автором: 25 Июля, 2013 - 10:02:41)

 
 Top
Мелкий Супермодератор
Отправлено: 25 Июля, 2013 - 10:04:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Открываем исходник previous_post_link и видим: http://core[dot]trac[dot]wordpress[dot]org/b[dot][dot][dot]-template.php#L0
Ничего она не возвращает, а самостоятельно делает echo (из вызываемой функции adjacent_post_link).

При этом, в $previous1 идёт NULL. К сожалению, даже без предупреждения E_STRICT.
htmlentities от NULL даст пустую строку. Всё, головоломка решена.
Итог: для отладки используйте var_dump, а не echo. Тогда NULL был бы виден заблаговременно там, где ожидалась строка.


-----
PostgreSQL DBA
 
 Top
KApriS
Отправлено: 25 Июля, 2013 - 10:29:08
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Мелкий пишет:
Открываем исходник previous_post_link и видим: http://core[dot]trac[dot]wordpress[dot]org/b[dot][dot][dot]-template.php#L0
Ничего она не возвращает, а самостоятельно делает echo (из вызываемой функции adjacent_post_link).

При этом, в $previous1 идёт NULL. К сожалению, даже без предупреждения E_STRICT.
htmlentities от NULL даст пустую строку. Всё, головоломка решена.
Итог: для отладки используйте var_dump, а не echo. Тогда NULL был бы виден заблаговременно там, где ожидалась строка.

Спасибо, то есть решением моей проблемы будет написание и использование функции, идентичной adjacent_post_link, где итог будет возвращатся return-ом, а не выводиться в echo?
 
 Top
Мелкий Супермодератор
Отправлено: 25 Июля, 2013 - 10:49:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Можно обойтись вызовом имеющейся и перехватом вывода функциями ob_*
Например, такая обёртка:
PHP:
скопировать код в буфер обмена
  1. function return_echo() {
  2.         $rgArgs = func_get_args();
  3.         if (empty($rgArgs)) throw new exception('expected function name');
  4.         $sMethodName = array_shift($rgArgs);
  5.         ob_start();
  6.         call_user_func_array($sMethodName, $rgArgs);
  7.         return ob_get_clean();
  8.         }
  9. $previous = return_echo('previous_post_link', '%link', '1111', true);


-----
PostgreSQL DBA
 
 Top
KApriS
Отправлено: 25 Июля, 2013 - 11:00:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Мелкий пишет:
Можно обойтись вызовом имеющейся и перехватом вывода функциями ob_*

Вы не представляете себе всю степень моей признательности вам)))) Спасибо огромное, Вам и всем, кто помог разобраться в проблеме. Цветы
 
 Top
DelphinPRO
Отправлено: 25 Июля, 2013 - 11:52:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Мелкий пишет:
Можно обойтись вызовом имеющейся и перехватом вывода функциями ob_*

А можно полистать документацию к вордпрессу. Насколько я помню, шаблонные функции имеются в двух вариантах - самостоятельно выводящие контент и возвращающие его. Там разница в названиях в префиксе.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB