Я хочу заменить все строковые значения от example.com
до sample.com
, за исключением расширения изображения .png
, .jpeg
, .jpg
и т. д.
$body = ' www.example.com, example.com, example.com/hello.html, example.com/logo.png, example.com/yourbaby.php , example.com/newimage.jpg, www.example.com/newimage.jpg';
//values
$oldomain = ['example.com','www.'];
$newdomain= ['sample.com', ''];
$excludeextension = [".png", ".jpg", ".jpeg"];
//Replace
$body = str_replace($olddomain, $newdomain, $body);
$body = str_replace($excludeextension, '', $body);
//output
echo $body;
Выход, который я ищу:
sample.com, sample.com, sample.com/hello.html, example.com/logo.png, sample.com/yourbaby.php , example.com/newimage.jpg, www.example.com/newimage.jpg
Ожидание
https://example.com -> https://sample.com
https://www.example.com -> https://sample.com
https://subdomain.example.com -> https://subdomain.sample.com
https://www.example.com/image.png -> https://www.example.com/image.png
https://example.com/image.png -> https://example.com/image.png
Хороший отступ и макет кода помогут нам прочитать код и, что более важно, помогут вам отладить ваш код Взгляните на стандарт кодирования для вашей собственной выгоды. Вас могут попросить изменить этот код через несколько недель/месяцев, и в конце вы поблагодарите меня.
@RiggsFolly извините за недоразумение при написании вопроса. Я обновил все с помощью Clear.
@MehulKumar Нет необходимости, я думаю, что все недоразумение было моим :)
Вы можете сделать это, используя str_replace()
и немного взрываясь и взрываясь.
$body = ' www.example.com, example.com, example.com/hello.html, example.com/logo.png, example.com/yourbaby.php, example.com/newimage.jpg, www.example.com/newimage.jpg';
$oldomain = ['example.com','www.'];
$newdomain= ['sample.com', ''];
$excludeextension = ["png", "jpg", "jpeg"];
$doms = explode(',', $body);
foreach ($doms as &$dom) {
// get extension
$pi = pathinfo($dom);
if ( ! in_array( $pi['extension'], $excludeextension) ){
$dom = str_replace($oldomain, $newdomain, $dom);
}
}
$NewStr = implode($doms);
echo $NewStr;
РЕЗУЛЬТАТ
sample.com sample.com sample.com/hello.html example.com/logo.png sample.com/yourbaby.php example.com/newimage.jpg www.example.com/newimage.jpg
Я обновил свой вопрос. Я использую массив, как вы упомянули вчера здесь: stackoverflow.com/a/75311164/20776947. Я попробовал этот ответ с вашим вчерашним ответом, и он выдал ошибку. PHP Parse error: syntax error, unexpected '$excludeextension' (T_VARIABLE)
В вашем коде нет ошибки. Но, как и вчера, я сказал, что www.example.com
или example.com
следует заменить на sample.com
. Итак, вы дали мне решение для использования PHP Array
. Итак, когда я использую массив, например $oldomain = ['example.com','www.'];
и $newdomain= ['sample.com', '']
, я получаю сообщение об ошибке. Я также обновил свой вопрос
Я пытаюсь объединить ваш this answer
и ваш этот ответ https://stackoverflow.com/a/75311164/20776947
, и результат (ошибка): 3v4l.org/qpOeU
Да, это отлично работает, как и ожидалось. Итак, я могу добавить несколько расширений, таких как css
, js
и т. д. Еще раз спасибо.
Я так думаю, но попробуй
PATHINFO_EXTENSION
и str_replace
explode
, чем implode
$body = 'example.com, www.example.com, https://www.example.com, https://example.com, subdomain.example.com, example.com/logo.png, www.example.com/logo.png, example.com/hello/logo.png, https://example.com/logo.png, subdomain.example.com/logo.png"';
//Defined Values
$oldomain = ["example.com", "www.example.com"];
$newdomain = "sample.com";
$excludeextension = ["png", "jpg", "jpeg", "css"];
// Split the string into an array of URLs
$urls_body_extension = explode(", ", $body);
// Loop through each URL and replace it if necessary
foreach ($urls_body_extension as &$url_body_extension) {
$extension_body_extension = pathinfo($url_body_extension, PATHINFO_EXTENSION);
if (!in_array($extension_body_extension, $excludeextension)) {
foreach ($oldomain as $domain_body_extension) {
if (strpos($url_body_extension, $domain_body_extension) !== false) {
$url_body_extension = str_replace($domain_body_extension, $newdomain, $url_body_extension);
break;
}
}
}
}
// Join the modified URLs back into a string
$body = implode(", ", $urls_body_extension);
echo $body;
Вы пробовали что-нибудь? Где ты застрял? Мы будем рады помочь, если это необходимо, но это не бесплатная услуга аутсорсинга. Пожалуйста, прочтите Как спросить