Я пытаюсь обернуть апострофы вокруг строки в PHP.

Я показал результат каждого шага. Я не могу понять, как обернуть вокруг каждого имени?

Я могу получить это далеко Listen Up, Case Studies, Publications, но мне нужно, чтобы результат выглядел следующим образом 'Listen Up', 'Case Studies', 'Publications'

$categories = $wlrs_cats[0]['content_type']; 

$value = implode(',', $categories);
// $value = content-type/listen-up/,content-type/case-studies/,content-type/publications/

$result = ucwords(strtr($value, ["content-type/"=>" '", "/"=>"'", "-"=>" "]), "' ");
// $result; // 'Listen Up', 'Case Studies', 'Publications'
php
2
StephenMeehan 6 Фев 2020 в 19:08

2 ответа

Лучший ответ

Я бы предложил более простое решение, где $string ваш оригинал, как content-type/listen-up/,content-type/case-studies/,content-type/publications/:

$result = ucwords(strtr($string, ["content-type/"=>" '", "/"=>"'", "-"=>" "]), "' ");

Таким образом, вы заменяете определенные вещи, а затем пишете с заглавной буквы, указывая, за какими словами следует (' и space).

2
AbraCadaver 6 Фев 2020 в 18:13

Я считаю, что лучшим подходом было бы добавить эти апострофы, пока они еще находятся в массиве, перед вашей первой implode операцией.

Вы можете немного поумнеть и пройтись по массиву, добавив апострофы, вот так:

$categories = $wlrs_cats[0]['content_type'];
array_walk($categories, function(&$value) {
  $value = "'$value'";
});
//Returns: 'content-type/listen-up/','content-type/case-studies/','content-type/publications/'

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

$categories = $wlrs_cats[0]['content_type'];
foreach ($categories as &$value)
  $value = "'$value'";
//Returns: 'content-type/listen-up/','content-type/case-studies/','content-type/publications/'
1
zbee 6 Фев 2020 в 16:33