Как удалить текст из переменной?(РНР) - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть переменная $link_item, она используется с echo и дает строки типа

<span class="name">Google</span>http://google.com

Как удалить "<span class="name">Google</span>" из строки?

Это должно дать просто "http://google.com".

Слышал, что это можно сделать с помощью regex(), пожалуйста, помогите.

Ответы [ 5 ]

3 голосов
/ 07 апреля 2010
$string = '<span class="name">Google</span>http://google.com';
$pieces = explode("</span>",$string);
//In case there is more than one span before the URL
echo $pieces[count($pieces) -1];
3 голосов
/ 07 апреля 2010

Без регулярного выражения:

echo substr($link_item, stripos($link_item, 'http:'))

Но это работает, только если первая часть (т. Е. <span class="name">Google</span>) никогда не содержит http:. Если вы можете убедиться в этом: вот, пожалуйста:)

Ссылка: substr, stripos

Обновление:

Как @Gordon указывает в своем комментарии, мой код делает то же самое, что strstr() уже делает. Я просто поместил это здесь в случае, если никто не читает комментарии:

echo strstr($link_item, 'http://');
1 голос
/ 07 апреля 2010

Решено:

$contents = '<span class="name">Google</span>http://google.com';
$new_text = preg_replace('/<span[^>]*>([\s\S]*?)<\/span[^>]*>/', '', $contents);
echo $new_text;

// outputs -> http://google.com
0 голосов
/ 07 апреля 2010

Сделано сам

$link_item_url = preg_replace('@<span[^>]*?>.*?</span>@si', '', $link_item);

Это удалит все <span + something + </span> из переменной $link_item.

Спасибо за все.

0 голосов
/ 07 апреля 2010

Не используйте регулярные выражения. Используйте HTML-парсер , чтобы извлечь из него только нужный вам текст.

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