Неполный тег

FANTAzeRus

Guest
Неполный тег

Есть код:

$a = "<font color=red>Test</font>";
echo strip_tags($a);

Получим: Test

а вот если текст будет таким(НЕ СПРАШИВАЙТЕ ПОЧЕМУ, БУДЕТ И ВСЕ):

$a = "nt color=red>Test</font>";
echo strip_tags($a);

Получим: nt color=red>Test

Вопрос: как вырезать ВСЕ что стоит ДО > включая и > ???
 

FANTAzeRus

Guest
смИшно ... а можно серьезней??? Ок я покажу почему ЭТО может быть:

select
ca.cid,
ca.title,
if(not isnull(co.text),
CONCAT(
SUBSTRING(co.text,POSITION('{SEARCH_LINE}' IN co.text)-100,100),
'(','{SEARCH_LINE}',')',
SUBSTRING(co.text,(POSITION('{SEARCH_LINE}' IN co.text)+LENGTH('{SEARCH_LINE}')),100)),
''
) tex
from cat ca
LEFT JOIN content co ON(co.cid=ca.cid)
WHERE (ca.title like '%{SEARCH_LINE}%' or co.text like '%{SEARCH_LINE}%') and wis='Y'
ORDER BY cdat DESC
 

Winer

Мимо проходил
а что тут смешного, тебе даже ссылку дали где про Реги можно почитать. Если их поймёшь, не будешь каждый раз бегать на форум с вопросами "как мне вырезать это ??? а это ??? а вон то ???"
 

IL78

Guest
Дописать открывающую "<" вручную + strip_tags ?
 

iliah

Новичок
FANTAzeRus
для данного варианта (поскольку пропущенный ">" в конце на корректность striptags не влияет)
PHP:
$a = "nt color=red>Test</font>";
for ($i = 0, $l = strlen($a); $i < $l; $i++) {
        if ($a[$i] == "<")  break;
        if ($a[$i] == ">") { $a = "<".$a; break; }
        }
echo strip_tags($a);
 

FANTAzeRus

Guest
Тогда уж:

$a = "ont color=red>Test</font>";
$a = strip_tags($a);
$a = (strpos($a,">")>0)?"<".$a:$a;
$a = strip_tags($a);
echo $a;

Но мне это решение не нравится!
Блин чего то не получается для preg_replace() регулярное выражение написать! Помогите с готовым решением пожалуйста!!!
 

Winer

Мимо проходил
а ты пробовал написать регулярку ???
показывай тогда.
 

IL78

Guest
А чем плохо так?
PHP:
if (strpos($a,">") < strpos($a,"<")) $a = "<".$a;

echo strip_tags($a);
 

iliah

Новичок
FANTAzeRus
если первый striptag в твоем коде оставить тогда
$a = preg_replace("/(.*>)/", "", $a);
щас попробую без первого striptag

-~{}~ 24.06.04 17:33:

что-то вроде этого - $a = preg_replace("/(<.*?>|[^<]*>)/", "", $a);?
 

IL78

Guest
Это работает: preg_replace("/(^[^\>\<]*|\<[^\>]*)(\>|\$)/",'',$a)

впрочем, как и strip_tags("<".$a) - независимо от полноты открывающего тега

имхо второй вариант даже надежнее :)
 

FANTAzeRus

Guest
2 iliah:
Спасибо! ИМХО самое правильное и простое решение!
 
Сверху