Удалить неопределенный кусок строки (URL)

У меня есть массив JSON, как это:

[
{
"title": " Bones of the Hills <a href="/series/44108-conqueror" class="greyText">(Conqueror #3) </a>",
"author": "Conn Iggulden",
"format": "Hardcover",
"pages": "518",
"rating": "4.29",
"image": "http://d.gr-assets.com/books/1347616868l/3276637.jpg"}
]

Иногда (не всегда) строка заголовка содержит ссылку. Как удалить ссылку и все в ней? Я даже не хочу текст внутри якоря. Я хочу закончить с просто «Bones of the Hills» в качестве названия. Как я могу сделать это в php? Я гуглил грузы, но ничего не получалось.

1

Решение

Вы можете использовать встроенную функцию php strip_tags () для заголовка, он удалит все элементы HTML из заголовка, включая ссылку

0

Другие решения

Вы можете использовать функцию strip_tag (), чтобы избежать этой ошибки

 $str='[{"title": " Bones of the Hills <a href="/series/44108-conqueror" class="greyText">(Conqueror #3) </a>","author": "Conn Iggulden","format": "Hardcover",';
$str.='"pages": "518","rating": "4.29","image": "http://d.gr-assets.com/books/1347616868l/3276637.jpg"}]';
echo      $str2=strip_tags($str);
$array=json_decode($str2);
print_r($array);
0

Прежде всего, ваш массив JSON неверен, проверьте это

[
{
"title": " "title": " Bones of the Hills <a href=\\"/series/44108-conqueror\\" class=\\"test\\">(Conqueror #3) </a>",
"author": "Conn Iggulden",
"format": "Hardcover",
"pages": "518",
"rating": "4.29",
"image": "http://d.gr-assets.com/books/1347616868l/3276637.jpg"}
]

использование "title": " Bones of the Hills <a href=\\"/series/44108-conqueror\\" class=\\"test\\">(Conqueror #3) </a>"

вместо

<a href="/series/44108-conqueror" class="greyText"

затем

$arr = json_decode($json,true);
$arr['title'] = preg_replace("/<a.+?href.+?>.+?<\/a>/is","",$arr['title']);

var_dump($arr['title']);

теперь ваш титул будет

string(20) " Bones of the Hills "
0