2013-08-02 2 views
2

Я использую плагин для передачи данных, который имеет пользовательскую функцию PHP, которая позволяет мне переписать каждый файл Buy_URL в фиде. Скажем, к примеру, один из первых Buy_URLs это:Должен ли я использовать str_replace вместо substr?

http://www.affiliatecompa.com/product/clean.com?ref=ab 

Я хочу переписать начало и конец URL с

"http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com"

и

" laik "соответственно. так что это должно стать:

http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com/product/clean.com?ref=laik 

Я связался с автором плагина, и он сказал мне, чтобы поместить следующий код в function.php в моей теме, а затем вызвать функцию в плагин

function WOKI_Change_Url($x){ 
    $y = substr($x, 29); 
    $y = substr($y, -2); 
    return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . $y . 'laik'; 
} 

Видимо это не работает, потому что она удаляет любую другую часть URL и каждый Buyurl теперь стал

http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.comlaik 

Я подозреваю, что подстрока не подходит для того, что я хочу делать в этом случае. Должен ли я использовать str_replace вместо функции?

+0

заканчивал функцию: [parse_url] (http://www.php.net/manual/en/function.parse-url.php), [parse_str] (HTTP: // WWW .php.net/manual/en/function.parse-str.php) и [http_build_query] (http://www.php.net/manual/en/function.http-build-query.php) – bitWorking

ответ

0

str_replace() подходит для того, что вы пытаетесь сделать, но его метод также может работать. Он просто отключил параметр на substr(). Его код должен работать с этим параметром добавлен обратно в (при условии, что у вас всегда есть значение 2 символов в ref=ab части строки:

function WOKI_Change_Url($x){ 
    $y = substr($x, 29); 
    $y = substr($y, 0, -2); //the 0 here tells it to use the whole string, minus the last two chars; without the zero, this would muck things up a lot 
    return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . $y . 'laik'; 
} 

Как str_replace(), что тоже может работать, если вы знаете значение что вы пытаетесь заменить, но все усложняется вытекания с помощью str_replace Если он всегда точно ref=ab быть заменены ref=laik то должны работать (с использованием urlencode() для выполнения убегающего):.

function WOKI_Change_Url($x){ 
    $y = str_replace($x, "ref=ab", "ref=laik"); //this replaces the ref=ab part 
    return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . urlencode($y); 
} 

Обратите внимания, что если вы не знаете наверняка что всегда будет ab, что вы заменяете, вместо этого вам, возможно, понадобится preg_replace, с регулярным выражением, чтобы заменить все, что приходит после ref=. Что-то вроде:

function WOKI_Change_Url($x){ 
    $y = preg_replace("/ref=.*/", "ref=laik", $x); //this replaces the ref= part for anything... but I haven't tested it 
    return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . urlencode($y); 
} 
+0

Я ценю ваш Помогите. Я пробовал их всех, но, к сожалению, никто из них не работает. substr() просто ставит «http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com» и «laik» вместе вместо того, чтобы переписывать начало и конец URL. preg_replace и str_replace() просто замените весь URL на «http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com». Я буду продолжать работать над этим. Спасибо. – RedGiant

+0

Я начинаю думать, что что-то мешает передать исходный url функции в качестве параметра. Можете ли вы обновить вопрос с примера соответствующего кода, в котором вызывается функция 'WOKI_Change_Url'? Поведение, которое вы описываете, соответствует тому, что произойдет, если '$ x' не имеет значения. –

+0

Вы можете проверить это, добавив 'echo $ x;' в качестве первой строки каждой функции, или если это не сработает, используя 'return $ x;' в некоторых тестах, чтобы узнать, какое значение получает функция для источника URL-адрес. –

Смежные вопросы