Smirnof

Рейтинг
72
Регистрация
13.11.2012
Интересы
efcb2e

Пожалуйста, помогите доработать функцию.

Ели добился нужного мне результата, хотел, чтобы из url адреса строки автоматически брался параметр new и url (после ?), пример:

вася.ру/вася?new=мой телефон&url=номер такой то

С этим справился.

Не могу переписать функцию так, чтобы если в строке url нет параметров new и url,

в том месте где должны были бы отобразиться результаты отсутствовали пустые параметры, пример:

вася.ру/вася?new=&url=

Т.е. убрать ?new=&url= если в адресе их нет

Прошу прощение, если не внятно задал вопрос, готов ответить на ваши вопросы.

Очень прошу помочь.

Код функции:


protected function listSearchVideo($yt){

$yt->snippet->channelTitle = ($yt->snippet->channelTitle);

if(empty($yt->snippet->channelTitle)) $yt->snippet->channelTitle = "Unknown";

global $listQueryVideoHit;

if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;

elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;

if (isset($_GET['url'])) {
// var_dump($_GET['url']); // val1
}
if (isset($_GET['new'])) {
// var_dump($_GET['new']); // val1
}

return "<div class='div_topic_cover topic_cover_".(++$listQueryVideoHit)." reviews'>

<a href=\"".Main::href("video/{$yt->id->videoId}")."?new=".($_GET['new'])."&url=".($_GET['url'])."\" class=\"a_topic_cover\">

</a>
</div>";
}

<a href=\"".Main::href("video/{$yt->id->videoId}")."?new=".($_GET['new'])."&url=".($_GET['url'])."\" class=\"a_topic_cover\">

проверить ($_GET['new']) и ($_GET['url']) если нет, то строку (адрес) вывести как вася.ру/вася

Спасибо!

Вопросы не решены :(

Скрыть блок таким образом не получилось

<?if(!empty($sk["$color"])):?>
............код............
<?php endif;?>

Как подставить параметр из url адреса в строку

<a href=\"".Main::href("video/{$yt->id->videoId}")."\" class=\"a_topic_cover\">

тоже не разобрался.

Помогите или направьте в нужном направлении. Спасибо!

Помогите, пожалуйста, разобраться с передачей параметра в ссылке php

Создал функционал на сайте.

Вывожу ряд тегов со ссылками и двумя параметрами в них ?new=текст&url=текст

После перехода по этим ссылкам, происходит поиск по сайту.

В результатах поиска в самом начале вывожу тест который был передан в ссылке (?new=текст&url=текст), далее идут сами результаты поиска.

Вывожу тал:

<?php

function foo(&$url) { // теперь параметр будет ссылаться на оригинальное значение
$url = $_GET["url"]; // присваиваем новое значение
}

foo($color);

function foos(&$new) { // теперь параметр будет ссылаться на оригинальное значение
$new = $_GET["new"]; // присваиваем новое значение
}

foos($colors);

?>


<?php

// Продаю в результатах поиска
echo "<br /><center><a href='$color' class=\"div_index_topics_more\" target=\"_blank\" rel=\"nofollow\">Купить $colors</a></center>";

?>

результаты поиска...

Вопрос, как передать параметр той же ссылки - каждому результату поиска, чтобы перейдя на страницу конечного результата отобразить тот же текст в самом верху?

Результаты поиска формируются следующей функцией:

protected function listSearchVideo($yt){
$yt->snippet->channelTitle = ($yt->snippet->channelTitle);

if(empty($yt->snippet->channelTitle)) $yt->snippet->channelTitle = "Unknown";
global $listQueryVideoHit;

if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;

elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;
return "<div class='div_topic_cover topic_cover_".(++$listQueryVideoHit)." reviews'>
<a href=\"".Main::href("video/{$yt->id->videoId}")."\" class=\"a_topic_cover\">
<img src=\"/themes/images/icon/blank_275x180.png\" class=\"img_topic_cover\" alt=\"{$yt->snippet->title}\" style=\"background: url(https://img.youtube.com/vi/{$yt->id->videoId}/mqdefault.jpg;);\">
<div class=\"div_topic_cover_caption\">{$yt->snippet->title}</div>
</a>
</div>";
}

Много чего перепробовал но истину не нашел :(

Хотелось бы еще сделать так, чтобы если параметра в ссылке изначально нет, то и выводить его соответственно не нужно.

Так как ссылка может быть как с параметром так и без него.

И еще, пожалуйста, помогите скрыть этот блок

<?php

function foo(&$url) { // теперь параметр будет ссылаться на оригинальное значение
$url = $_GET["url"]; // присваиваем новое значение
}

foo($color);

function foos(&$new) { // теперь параметр будет ссылаться на оригинальное значение
$new = $_GET["new"]; // присваиваем новое значение
}

foos($colors);

?>


<?php

// Продаю в результатах поиска
echo "<br /><center><a href='$color' class=\"div_index_topics_more\" target=\"_blank\" rel=\"nofollow\">Купить $colors</a></center>";

?>

в том случае если параметр не задан, сейчас в теле страницы в этом случае отображается "Купить "

Большое спасибо!

Разобрался, спасибо!

Я изначально не понял, что $arr2 заменяет значения в $arr1

Сделал так в итоге (знаки в примере это тестовый вариант, пример рабочий)

//$itemtitle=str_replace('"', "'", $item->title);
$arr1 = array('"', '#', '«', '»');
$arr2 = array("'", '& #35;', '!', '!');
$itemtitle=str_replace($arr1, $arr2, $item->title);

есть ошибки в логике? :)

Спасибо!

Я бы почитал, только где не знаю, точнее что искать не знаю.

Куда вставить аргументы

$arr1 = array('"', '#', '«', '»');

$arr2 = array("'", '& #35;', '&laquo;'', '&raquo;');

не понял... + где прописано то, чем их заменить... :(

попробую методом тыка

Понял.

Sitealert, большое спасибо!

Работает :)

Как в строке

$itemtitle=str_replace('"', "'", $item->title);

сделать перечисление знаков, которые нужно заменить (кроме " еще заменять # и « и » и т.д.)?

Попробовал через запятую чередовать - не работает.

Есть готовая функция но как ее применить не понимаю

public static function clean($string,$level='1',$chars=FALSE,$leave=""){
if(is_array($string)) return array_map("Main::clean",$string);
$string=preg_replace('/<script[^>]*>([\s\S]*?)<\/script[^>]*>/i', '', $string);
switch ($level) {
case '3':
if(empty($leave)){
$search = array('@<script[^>]*?>.*?</script>@si',
'@<[\/\!]*?[^<>]*?>@si',
'@<style[^>]*?>.*?</style>@siU',
'@<![\s\S]*?--[ \t\n\r]*>@'
);
$string = preg_replace($search, '', $string);
}
$string=strip_tags($string,$leave);
if($chars) {
if(phpversion() >= 5.4){
$string=htmlspecialchars($string, ENT_QUOTES | ENT_HTML5,"UTF-8");
}else{
$string=htmlspecialchars($string, ENT_QUOTES,"UTF-8");
}
}
break;
case '2':
$string=strip_tags($string,'<b><i><s><p><u><strong><span>');
break;
case '1':
$string=strip_tags($string,'<b><i><s><u><strong><a><pre><code><p><div><span>');
break;
}
$string=str_replace('href=','rel="nofollow" href=', $string);
return $string;
}

Спасибо!

Сделал так

<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4067/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$store=str_replace('"', "'", $store);
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="/search/'.$item->title.'" class="blue3">';
echo '<div class=div_table><div class=div_row>';
echo '<div><span>'.$item->title.'</span></div></div></div></a></div>';
}
}
?>

Не сработало, появилась ошибка

Notice: Undefined variable: store in $store=str_replace('"', "'", $store);

Пытаюсь создать дальнейшую обработку результатов вывода, столкнулся с проблемой появления 400 ошибки из-за спецсимволов (" и # - может их гораздо больше).

Можно из следующего кода удалить спецсимволы на лету, оставив пробелы или заменив их на + ?

<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4067/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="/search/'.$item->title.'" class="blue3">';
echo '<div class=div_table><div class=div_row>';
echo '<div><span>'.$item->title.'</span></div></div></div></a></div>';
}
}

?>

Т.е. почистить результат для '.$item->title.'

Пример:

«100% УСПЕХ»

исправить на

+100%+УСПЕХ+

или на

100% УСПЕХ

Пробовал вставить $store=str_replace('"', '\'');

не помогло или не там вставил :(

Помогите, пожалуйста.

webjey, большое спасибо!

Работает :)

Вот какую ошибку показывает когда блок пустой

Notice: Trying to get property of non-object in

$wares=json_decode($match['json'])->wares;

Warning: Invalid argument supplied for foreach() in

foreach ($wares as $item) {

Всего: 235